2026-03-26 02:23:36 +07:00

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
}