X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/d8f3785bb69288663f4cc46bf4d609c6770452d5..03ef9525ba0e62037b55606b851ee746967a003f:/schedule.go?ds=inline diff --git a/schedule.go b/schedule.go index 7eb747f..3c3456d 100644 --- a/schedule.go +++ b/schedule.go @@ -225,7 +225,7 @@ func (s *Schedules) deliver(ctx context.Context, l *TurnLoop) error { err = s.Done(schedule, now) if err != nil { - return err + return fmt.Errorf("acknowledge schedule run: %w", err) } attrs := []any{"id", schedule.ID} @@ -286,7 +286,12 @@ func (s *Schedules) Done(schedule Schedule, now time.Time) error { if schedule.Cron == "" { s.file.Schedules = slices.Delete(s.file.Schedules, index, index+1) - return s.save() + err := s.save() + if err != nil { + return fmt.Errorf("save completed one-time schedule: %w", err) + } + + return nil } cron, err := scheduleParseCron(schedule.Cron) @@ -298,12 +303,22 @@ func (s *Schedules) Done(schedule Schedule, now time.Time) error { if !found { s.file.Schedules = slices.Delete(s.file.Schedules, index, index+1) - return s.save() + err = s.save() + if err != nil { + return fmt.Errorf("save exhausted schedule: %w", err) + } + + return nil } s.file.Schedules[index].Due = next - return s.save() + err = s.save() + if err != nil { + return fmt.Errorf("save next schedule run: %w", err) + } + + return nil } // sorted returns a copy of the schedules by due time, then by ID. @@ -352,7 +367,7 @@ func (s *Schedules) Set(text string, at, cron *string) (string, error) { default: parsed, err := scheduleParseCron(*cron) if err != nil { - return "", err + return "", fmt.Errorf("parse schedule expression: %w", err) } next, found := parsed.Next(now) @@ -372,7 +387,7 @@ func (s *Schedules) Set(text string, at, cron *string) (string, error) { s.file.Schedules = append(s.file.Schedules, schedule) err := s.save() if err != nil { - return "", err + return "", fmt.Errorf("save new schedule: %w", err) } s.change() @@ -430,7 +445,7 @@ func (s *Schedules) Remove(id int) (string, error) { s.file.Schedules = slices.Delete(s.file.Schedules, index, index+1) err := s.save() if err != nil { - return "", err + return "", fmt.Errorf("save removed schedule: %w", err) } s.change()