Class: Que::Scheduler::Jobs::QueSchedulerAuditClearDownJob
- Inherits:
-
Job
- Object
- Job
- Que::Scheduler::Jobs::QueSchedulerAuditClearDownJob
- Defined in:
- lib/que/scheduler/jobs/que_scheduler_audit_clear_down_job.rb
Constant Summary collapse
- DELETE_AUDIT_ENQUEUED_SQL =
build_sql("que_scheduler_audit_enqueued").freeze
- DELETE_AUDIT_SQL =
build_sql("que_scheduler_audit").freeze
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.build_sql(table_name) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/que/scheduler/jobs/que_scheduler_audit_clear_down_job.rb', line 10 def build_sql(table_name) <<~SQL WITH deleted AS ( DELETE FROM #{table_name} WHERE scheduler_job_id <= ( SELECT scheduler_job_id FROM que_scheduler_audit ORDER BY scheduler_job_id DESC LIMIT 1 OFFSET $1 ) RETURNING * ) SELECT count(*) FROM deleted; SQL end |
Instance Method Details
#run(options) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/que/scheduler/jobs/que_scheduler_audit_clear_down_job.rb', line 30 def run() retain_row_count = .symbolize_keys.fetch(:retain_row_count) Que::Scheduler::Db.transaction do # This may delete zero or more than `retain_row_count` depending on if anything was # scheduled in each of the past schedule runs Que::Scheduler::VersionSupport.execute(DELETE_AUDIT_ENQUEUED_SQL, [retain_row_count]) # This will delete all but `retain_row_count` oldest rows count = Que::Scheduler::VersionSupport.execute(DELETE_AUDIT_SQL, [retain_row_count]) log = "#{self.class} cleared down #{count.first.fetch(:count)} rows" ::Que.log(event: :"que-scheduler", message: log) end end |