package services import ( "GoMembership/internal/models" "GoMembership/internal/repositories" "golang.org/x/crypto/bcrypt" "time" ) type UserService interface { RegisterUser(user *models.User) error } type userService struct { repo repositories.UserRepository } func NewUserService(repo repositories.UserRepository) UserService { return &userService{repo} } func (s *userService) RegisterUser(user *models.User) error { hashedPassword, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost) if err != nil { return err } user.Password = string(hashedPassword) user.CreatedAt = time.Now() user.UpdatedAt = time.Now() user.MandateDateSigned = time.Now() return s.repo.CreateUser(user) }