class Que::Scheduler::Jobs::QueSchedulerAuditClearDownJob

Constants

DELETE_AUDIT_ENQUEUED_SQL
DELETE_AUDIT_SQL

Public Class Methods

build_sql(table_name) click to toggle source
# 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

Public Instance Methods

run(options) click to toggle source
# File lib/que/scheduler/jobs/que_scheduler_audit_clear_down_job.rb, line 30
def run(options)
  retain_row_count = options.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".to_sym, message: log)
  end
end