package repository import ( "context" "errors" "go-server/internal/models" "github.com/google/uuid" "gorm.io/gorm" ) type UserRepository struct { db *gorm.DB } func NewUserRepository(db *gorm.DB) *UserRepository { return &UserRepository{db: db} } func (r *UserRepository) Create(ctx context.Context, user *models.User) error { return r.db.WithContext(ctx).Create(user).Error } func (r *UserRepository) GetByID(ctx context.Context, id uuid.UUID) (*models.User, error) { var user models.User if err := r.db.WithContext(ctx).First(&user, id).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil } return nil, err } return &user, nil } func (r *UserRepository) Update(ctx context.Context, user *models.User) error { return r.db.WithContext(ctx).Save(user).Error } func (r *UserRepository) Delete(ctx context.Context, id uuid.UUID) error { return r.db.WithContext(ctx).Delete(&models.User{}, id).Error } func (r *UserRepository) GetAll(ctx context.Context) ([]*models.User, error) { var users []*models.User err := r.db.WithContext(ctx).Find(&users).Error if err != nil { return nil, err } return users, nil }