feat: Remove hard-coded job and modify it via auto_sync_scheduler

This commit is contained in:
Alessio Cappa
2026-01-11 19:43:11 +01:00
parent 5b74e8d90b
commit 01ba747f4f
2 changed files with 34 additions and 6 deletions

View File

@@ -0,0 +1,34 @@
# app/services/auto_sync_scheduler.rb
class AutoSyncScheduler
JOB_NAME = "sync_all_accounts"
def self.sync!
Rails.logger.info("[AutoSyncScheduler] auto_sync_enabled=#{Setting.auto_sync_enabled}, time=#{Setting.auto_sync_time}")
if Setting.auto_sync_enabled?
upsert_job
else
remove_job
end
end
def self.upsert_job
time = Setting.auto_sync_time || "02:22"
hour, minute = time.split(":").map(&:to_i)
cron = "#{minute} #{hour} * * *"
Sidekiq::Cron::Job.create(
name: JOB_NAME,
cron: cron,
class: "SyncAllJob",
queue: "scheduled",
description: "Syncs all accounts for all families"
)
end
def self.remove_job
if (job = Sidekiq::Cron::Job.find(JOB_NAME))
job.destroy
end
end
end

View File

@@ -19,12 +19,6 @@ run_security_health_checks:
queue: "scheduled"
description: "Runs security health checks to detect issues with security data"
sync_all_accounts:
cron: "22 2 * * *" # every 24 hours at 2:22am
class: "SyncAllJob"
queue: "scheduled"
description: "Syncs all accounts for all families"
sync_hourly:
cron: "0 * * * *" # every hour at the top of the hour
class: "SyncHourlyJob"