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
+24 -11
View File
@@ -6,6 +6,7 @@ import (
"log"
"os"
"pinned_message/internal/models"
"strings"
"time"
)
@@ -21,36 +22,48 @@ func NewScheduleStorage(
}
}
func (s *ScheduleStorage) SaveSchedule(days []*models.Day) error {
data, err := json.Marshal(days)
func (s *ScheduleStorage) SaveSchedule(schedule *models.Schedule) error {
data, err := json.Marshal(schedule)
if err != nil {
return err
}
if err := os.WriteFile(s.filepath, data, 0644); err != nil {
return err
}
log.Printf("save story to: %s", s.filepath)
log.Printf("save schedule to: %s", s.filepath)
return nil
}
func (s *ScheduleStorage) GetSchedule() ([]*models.Day, error) {
func (s *ScheduleStorage) GetSchedule() (*models.Schedule, error) {
data, err := os.ReadFile(s.filepath)
if err != nil {
return nil, fmt.Errorf("story file %s not found", s.filepath)
return nil, fmt.Errorf("schedule file %s not found", s.filepath)
}
log.Printf("load story from: %s", s.filepath)
days := []*models.Day{}
if err := json.Unmarshal(data, &days); err != nil {
log.Printf("load schedule from: %s", s.filepath)
schedule := &models.Schedule{}
if err := json.Unmarshal(data, &schedule); err != nil {
return nil, err
}
filterDays := make([]*models.Day, 0, len(days))
for _, day := range days {
filterDays := make([]*models.Day, 0, len(schedule.Days))
for _, day := range schedule.Days {
if isBeforeToday(day.Date) {
continue
}
for i := range day.Performances {
filterNumbers := make([]*models.Number, 0, len(day.Performances[i].Numbers))
for _, number := range day.Performances[i].Numbers {
name := strings.TrimSpace(number.Name)
if name == "" || name == "-" {
continue
}
filterNumbers = append(filterNumbers, number)
}
day.Performances[i].Numbers = filterNumbers
}
filterDays = append(filterDays, day)
}
return filterDays, nil
schedule.Days = filterDays
return schedule, nil
}
func isBeforeToday(targetDate time.Time) bool {