initial commit 2
This commit is contained in:
81
domain/service/visit.go
Normal file
81
domain/service/visit.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"bitbucket.org/nemt/nemt-portal-api/domain/entity"
|
||||
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
|
||||
)
|
||||
|
||||
// userService is the domain service for user operations
|
||||
type visitService struct {
|
||||
svc *Service
|
||||
}
|
||||
|
||||
// newUserService returns an instance of userService
|
||||
func newVisitService(svc *Service) *visitService {
|
||||
return &visitService{
|
||||
svc: svc,
|
||||
}
|
||||
}
|
||||
|
||||
// Save the ride for a expected user
|
||||
func (s *visitService) Create(visit entity.Visit) (entity.Visit, error) {
|
||||
return s.svc.db.Visits().Create(visit)
|
||||
}
|
||||
|
||||
// Save the ride for a expected user
|
||||
func (s *visitService) GetAll(user entity.User) ([]entity.Visit, error) {
|
||||
visit, err := s.svc.db.Visits().GetAll(user)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rides, err := s.svc.db.Rides().GetAll(user)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ridesByVisit := make(map[int64][]entity.Ride)
|
||||
for _, r := range rides {
|
||||
rides := ridesByVisit[r.Visit.ID]
|
||||
rides = append(rides, r)
|
||||
ridesByVisit[r.Visit.ID] = rides
|
||||
}
|
||||
|
||||
for i, v := range visit {
|
||||
visit[i].Rides = ridesByVisit[v.ID]
|
||||
}
|
||||
|
||||
return visit, nil
|
||||
}
|
||||
|
||||
// Save the ride for a expected user
|
||||
func (s *visitService) GetByUUID(visitUUID string, user entity.User) (entity.Visit, error) {
|
||||
visit, err := s.svc.db.Visits().GetByUUID(visitUUID, user)
|
||||
if err != nil {
|
||||
return entity.Visit{}, errors.Wrap(err)
|
||||
}
|
||||
|
||||
rides, err := s.svc.db.Rides().GetByVisitUUID(visitUUID, user)
|
||||
if err != nil {
|
||||
return entity.Visit{}, errors.Wrap(err)
|
||||
}
|
||||
visit.Rides = rides
|
||||
|
||||
return visit, nil
|
||||
}
|
||||
|
||||
// Save the ride for a expected user
|
||||
func (s *visitService) GetByID(visitID int64, user entity.User) (entity.Visit, error) {
|
||||
visit, err := s.svc.db.Visits().GetByID(visitID, user)
|
||||
if err != nil {
|
||||
return entity.Visit{}, errors.Wrap(err)
|
||||
}
|
||||
|
||||
rides, err := s.svc.db.Rides().GetByVisitUUID(visit.UUID, user)
|
||||
if err != nil {
|
||||
return entity.Visit{}, errors.Wrap(err)
|
||||
}
|
||||
visit.Rides = rides
|
||||
|
||||
return visit, nil
|
||||
}
|
||||
Reference in New Issue
Block a user