package services import ( "git.devices.local/mawas/golang-api-skeleton/lib/common" "git.devices.local/mawas/golang-api-skeleton/models" ) type userRepository interface { ReadByUsername(username string) (*models.User, error) ReadAll() ([]*models.User, error) ReadSelection(ids []common.GUID) ([]*models.User, error) Create(users []*models.User) ([]*models.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{}) (*models.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() ([]*models.User, error) { return s.repo.ReadAll() } // ReadAll just retrieves user using User DAO, here can be additional logic for processing data retrieved by DAOs func (s *UserService) ReadSelection(ids []common.GUID) ([]*models.User, error) { return s.repo.ReadSelection(ids) } // Create just retrieves user using User DAO, here can be additional logic for processing data retrieved by DAOs func (s *UserService) Create(users []*models.User) ([]*models.User, error) { return s.repo.Create(users) } // NewUser returns a new created User object func NewUser(username, firstname, lastname, email string) models.User { return models.User{ Username: username, Firstname: firstname, Lastname: lastname, Email: email, PasswordHash: "generate_password_here", Active: true, } }