module Que::Scheduler::Migrations
Constants
- AUDIT_TABLE_NAME
- MAX_VERSION
- TABLE_COMMENT
Public Class Methods
audit_table_exists?()
click to toggle source
# File lib/que/scheduler/migrations.rb, line 37 def audit_table_exists? result = Que::Scheduler::VersionSupport.execute(<<-SQL) SELECT * FROM information_schema.tables WHERE table_name = '#{AUDIT_TABLE_NAME}'; SQL result.any? end
db_version()
click to toggle source
# File lib/que/scheduler/migrations.rb, line 29 def db_version if audit_table_exists? return Que::Scheduler::VersionSupport.execute(TABLE_COMMENT).first[:description].to_i end Que::Scheduler::Db.count_schedulers.zero? ? 0 : 1 end
migrate!(version:)
click to toggle source
# File lib/que/scheduler/migrations.rb, line 15 def migrate!(version:) # Like que, Do not migrate test DBs. return if defined?(Que::Testing) Que::Scheduler::Db.transaction do current = db_version if current < version migrate_up(current, version) elsif current > version migrate_down(current, version) end end end
reenqueue_scheduler_if_missing()
click to toggle source
This method is only intended for use in squashed migrations
# File lib/que/scheduler/migrations.rb, line 45 def reenqueue_scheduler_if_missing Que::Scheduler::SchedulerJob.enqueue if Que::Scheduler::Db.count_schedulers.zero? end
Private Class Methods
execute_step(number, direction)
click to toggle source
# File lib/que/scheduler/migrations.rb, line 61 def execute_step(number, direction) sql = IO.read("#{__dir__}/migrations/#{number}/#{direction}.sql") Que::Scheduler::VersionSupport.execute(sql) return unless audit_table_exists? Que::Scheduler::VersionSupport.execute( "COMMENT ON TABLE que_scheduler_audit IS '#{direction == :up ? number : number - 1}'" ) end
migrate_down(current, version)
click to toggle source
# File lib/que/scheduler/migrations.rb, line 56 def migrate_down(current, version) current += 1 execute_step((current -= 1), :down) until current == version + 1 end
migrate_up(current, version)
click to toggle source
# File lib/que/scheduler/migrations.rb, line 51 def migrate_up(current, version) Que::Scheduler::SchedulerJob.enqueue if current.zero? # Version 1 does not use SQL execute_step((current += 1), :up) until current == version end