/
service.go
36 lines (31 loc) · 1021 Bytes
/
service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package preference
// Service represents a preference service.
// It provides methods to manager user preferences.
//go:generate mockgen -source=service.go -package=preference -destination=mock_service.go
type Service interface {
Save(defaultRepo DefaultRepo) error
GetByUserID(userID uint) (DefaultRepo, error)
}
type serviceImpl struct {
repo Repo
}
// NewService creates and return a new preference service.
func NewService(repo Repo) Service {
return &serviceImpl{
repo: repo,
}
}
// Save stores the user default repository.
// It returns any error occurred while storing it.
func (s *serviceImpl) Save(defaultRepo DefaultRepo) error {
return s.repo.Save(defaultRepo)
}
// GetByUserID retrieves user's default repository.
// It returns user's default repository along with any error occurred while retrieving it.
func (s *serviceImpl) GetByUserID(userID uint) (DefaultRepo, error) {
defaultRepo, err := s.repo.GetByUserID(userID)
if err != nil {
return defaultRepo, err
}
return defaultRepo, nil
}