This commit is contained in:
2026-03-26 12:28:21 +07:00
parent 3b93fd0ec2
commit a7a9715faf
15 changed files with 176 additions and 136 deletions
+19 -11
View File
@@ -45,24 +45,29 @@ func (p *ScheduleParser) Run(ctx context.Context) {
defer ticker.Stop()
sheetURL := "https://docs.google.com/spreadsheets/d/1v57bCAG764j1ULXDMb3amNFMzkkLmObKWsl5oE0Xq00/edit?gid=57461713#gid=57461713"
p.parseAndSaveSchedule(ctx, sheetURL)
for {
select {
case <-ctx.Done():
return
case <-ticker.C:
days, err := p.parseSchedule(ctx, sheetURL)
if err != nil {
log.Printf("Error parse schedule: %s\n", sheetURL)
break
}
if err := p.scheduleStorage.SaveSchedule(days); err != nil {
log.Printf("Error save err: %s schedule: %s\n", err, sheetURL)
}
p.parseAndSaveSchedule(ctx, sheetURL)
}
}
}
func (p *ScheduleParser) parseSchedule(ctx context.Context, sheetURL string) ([]*models.Day, error) {
func (p *ScheduleParser) parseAndSaveSchedule(ctx context.Context, sheetURL string) {
schedule, err := p.parseSchedule(ctx, sheetURL)
if err != nil {
log.Printf("Error parse schedule: %s\n", sheetURL)
return
}
if err := p.scheduleStorage.SaveSchedule(schedule); err != nil {
log.Printf("Error save err: %s schedule: %s\n", err, sheetURL)
}
}
func (p *ScheduleParser) parseSchedule(ctx context.Context, sheetURL string) (*models.Schedule, error) {
var performances []performance
if err := p.dataParser.Parse(ctx, sheetURL, &performances); err != nil {
return nil, err
@@ -70,7 +75,7 @@ func (p *ScheduleParser) parseSchedule(ctx context.Context, sheetURL string) ([]
return p.mapSchedule(performances), nil
}
func (p *ScheduleParser) mapSchedule(performances []performance) []*models.Day {
func (p *ScheduleParser) mapSchedule(performances []performance) *models.Schedule {
days := []*models.Day{}
currentDay := &models.Day{}
for i, performance := range performances {
@@ -101,7 +106,10 @@ func (p *ScheduleParser) mapSchedule(performances []performance) []*models.Day {
)
}
days = append(days, currentDay)
return days
return &models.Schedule{
UpdateTime: time.Now().String(),
Days: days,
}
}
func (p *ScheduleParser) mapDate(date string) (time.Time, error) {