diff --git a/internal/cron/cron.go b/internal/cron/cron.go index f2c42a8..6706d5f 100644 --- a/internal/cron/cron.go +++ b/internal/cron/cron.go @@ -61,18 +61,6 @@ func (c *Cron) RemoveJob(id uuid.UUID) error { return nil } -// RemoveAllJobs removes all jobs from the scheduler. -func (c *Cron) RemoveAllJobs() error { - jobs := c.scheduler.Jobs() - for _, job := range jobs { - if err := c.RemoveJob(job.ID()); err != nil { - return err - } - } - - return nil -} - // Start starts the scheduler. func (c *Cron) Start() { c.scheduler.Start() diff --git a/internal/service/backups/schedule_all.go b/internal/service/backups/schedule_all.go index e986a49..c928290 100644 --- a/internal/service/backups/schedule_all.go +++ b/internal/service/backups/schedule_all.go @@ -14,14 +14,19 @@ func (s *Service) ScheduleAll() error { return err } - if err := s.cr.RemoveAllJobs(); err != nil { - return err - } - for _, backup := range activeBackups { - err := s.jobUpsert(backup.ID, backup.TimeZone, backup.CronExpression) - if err != nil { - return err + if !backup.IsActive { + err := s.jobRemove(backup.ID) + if err != nil { + return err + } + } + + if backup.IsActive { + err := s.jobUpsert(backup.ID, backup.TimeZone, backup.CronExpression) + if err != nil { + return err + } } } diff --git a/internal/service/backups/schedule_all.sql b/internal/service/backups/schedule_all.sql index 0585e67..570ba39 100644 --- a/internal/service/backups/schedule_all.sql +++ b/internal/service/backups/schedule_all.sql @@ -5,5 +5,4 @@ SELECT cron_expression, time_zone FROM backups -WHERE is_active = TRUE ORDER BY created_at DESC;