bill-server-go/internal/city/service.go

51 lines
1.4 KiB
Go
Raw Normal View History

2023-05-05 20:27:33 +08:00
package city
import (
"context"
"time"
)
// Implementation of the repository in this service.
type cityService struct {
cityReposiory CityRepository
}
// Create a new 'service' or 'use-case' for 'User' entity.
func NewCityService(r CityRepository) CityService {
return &cityService{
cityReposiory: r,
}
}
// Implementation of 'FetchCities'.
func (s *cityService) FetchCities(ctx context.Context) (*[]CityAndUser, error) {
return s.cityReposiory.GetCities(ctx)
}
// Implementation of 'FetchCity'.
func (s *cityService) FetchCity(ctx context.Context, cityID int) (*CityAndUser, error) {
return s.cityReposiory.GetCity(ctx, cityID)
}
// Implementation of 'BuildCity'.
// Our business logic is to set our default variables here.
func (s *cityService) BuildCity(ctx context.Context, city *City, userID int) error {
city.Created = time.Now().Unix()
city.Modified = time.Now().Unix()
city.User = userID
return s.cityReposiory.CreateCity(ctx, city)
}
// Implementation of 'ModifyCity'.
// Same as above, our business logic is to set our default variables.
func (s *cityService) ModifyCity(ctx context.Context, cityID int, city *City, userID int) error {
city.Modified = time.Now().Unix()
city.User = userID
return s.cityReposiory.UpdateCity(ctx, cityID, city)
}
// Implementation of 'DestroyCity'.
func (s *cityService) DestroyCity(ctx context.Context, cityID int) error {
return s.cityReposiory.DeleteCity(ctx, cityID)
}