package repository import ( "context" "bugulma/backend/internal/domain" "gorm.io/gorm" ) // UserRepository implements domain.UserRepository with GORM type UserRepository struct { *BaseRepository[domain.User] } // NewUserRepository creates a new GORM-based user repository func NewUserRepository(db *gorm.DB) domain.UserRepository { return &UserRepository{ BaseRepository: NewBaseRepository[domain.User](db), } } // GetByEmail retrieves a user by email func (r *UserRepository) GetByEmail(ctx context.Context, email string) (*domain.User, error) { return r.FindOneWhereWithContext(ctx, "email = ?", email) } // GetByID retrieves a user by ID func (r *UserRepository) GetByID(ctx context.Context, id string) (*domain.User, error) { return r.BaseRepository.GetByID(ctx, id) } // Create creates a new user with context func (r *UserRepository) Create(ctx context.Context, user *domain.User) error { return r.BaseRepository.Create(ctx, user) }