mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 12:04:08 +00:00
feat: Remove hard-coded job and modify it via auto_sync_scheduler
This commit is contained in:
34
app/services/auto_sync_scheduler.rb
Normal file
34
app/services/auto_sync_scheduler.rb
Normal 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
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user