package services import ( model "git.devices.local/mawas/golang-api-skeleton/models" ) type userRepository interface { ReadByUsername(username string) (*model.User, error) ReadAll() ([]*model.User, error) Create(user *model.User) (*model.User, error) } type UserService struct { repo userRepository } // NewUserService creates a new UserService with the given user DAO. func NewUserService(repo userRepository) *UserService { return &UserService{repo} } // ReadByUsername just retrieves user using User DAO, here can be additional logic for processing data retrieved by DAOs func (s *UserService) ReadByID(id interface{}) (*model.User, error) { return s.repo.ReadByUsername(id.(string)) } // ReadAll just retrieves user using User DAO, here can be additional logic for processing data retrieved by DAOs func (s *UserService) ReadAll() ([]*model.User, error) { return s.repo.ReadAll() } // Create just retrieves user using User DAO, here can be additional logic for processing data retrieved by DAOs func (s *UserService) Create(user *model.User) (*model.User, error) { return s.repo.Create(user) } // NewUser returns a new created user object func NewUser(username, firstname, lastname, email string) model.User { return model.User{ Username: username, Firstname: firstname, Lastname: lastname, Email: email, PasswordHash: "generate_password_here", } }