generated from VLADIMIR/template
updates
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user