generated from VLADIMIR/template
67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package services
|
|
|
|
import (
|
|
"context"
|
|
"pinned_message/internal/services/schedule_storage"
|
|
"pinned_message/proto"
|
|
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
|
|
type Services struct {
|
|
scheduleStorage *schedule_storage.ScheduleStorage
|
|
}
|
|
|
|
func NewServices(
|
|
scheduleStorage *schedule_storage.ScheduleStorage,
|
|
) *Services {
|
|
return &Services{
|
|
scheduleStorage: scheduleStorage,
|
|
}
|
|
}
|
|
|
|
func (s *Services) GetDays(context.Context, *proto.GetDaysReq) (*proto.GetDaysRsp, error) {
|
|
days, err := s.scheduleStorage.GetSchedule()
|
|
if err != nil {
|
|
return nil, status.Errorf(codes.Internal, err.Error())
|
|
}
|
|
|
|
res := &proto.GetDaysRsp{}
|
|
for _, day := range days {
|
|
|
|
resPerformances := make([]*proto.Performance, 0, len(day.Performances))
|
|
for _, performance := range day.Performances {
|
|
resNumbers := make([]*proto.Number, 0, len(performance.Numbers))
|
|
for _, number := range performance.Numbers {
|
|
resNumbers = append(
|
|
resNumbers,
|
|
&proto.Number{
|
|
Name: number.Name,
|
|
},
|
|
)
|
|
}
|
|
resPerformances = append(
|
|
resPerformances,
|
|
&proto.Performance{
|
|
TimeCollection: performance.TimeCollection,
|
|
TimeStart: performance.TimeStart,
|
|
Place: performance.Place,
|
|
Name: performance.Name,
|
|
Numbers: resNumbers,
|
|
Costumes: performance.Costumes,
|
|
},
|
|
)
|
|
}
|
|
res.Days = append(
|
|
res.Days,
|
|
&proto.Day{
|
|
Date: day.Date.String(),
|
|
Performances: resPerformances,
|
|
},
|
|
)
|
|
}
|
|
|
|
return res, nil
|
|
}
|