package account import ( "nos-comptes/internal/storage/dao" "nos-comptes/internal/storage/model" ) type Service struct { db *Database } func (s *Service) GetAllAccountOfUser(userId string) ([]*Account, error) { accounts, err := s.db.GetAllAccountOfUser(userId) if e, ok := err.(*dao.Error); ok { switch { case e.Type == dao.ErrTypeNotFound: return nil, &model.ErrNotFound default: return nil, &model.ErrInternalServer } } else if err != nil { return nil, &model.ErrInternalServer } if accounts == nil { return nil, &model.ErrNotFound } return accounts, nil } func (s *Service) GetAccountWithNameForUser(name string, id string) (*Account, error) { account, err := s.db.GetAccountWithNameForUser(name, id) if e, ok := err.(*dao.Error); ok { switch { case e.Type == dao.ErrTypeNotFound: return nil, &model.ErrNotFound default: return nil, &model.ErrInternalServer } } else if err != nil { return nil, &model.ErrInternalServer } return account, nil } func (s *Service) CreateAccount(account Account) (*Account, error) { err := s.db.CreateAccount(&account) return &account, err } func (s *Service) DeleteAccountOfUser(userId, accountId string) error { return s.db.DeleteAccountOfAnUser(userId, accountId) } func (s *Service) GetASpecificAccountForUser(userId, accountId string) (*Account, error) { return s.db.GetASpecificAccountForUser(userId, accountId) } func NewService(database *Database) *Service { return &Service{db: database} }