102 lines
3.7 KiB
Ruby
102 lines
3.7 KiB
Ruby
# This migration comes from solid_queue (originally 20231211200639)
|
|
class CreateSolidQueueTables < ActiveRecord::Migration[7.0]
|
|
def change
|
|
create_table :solid_queue_jobs do |t|
|
|
t.string :queue_name, null: false
|
|
t.string :class_name, null: false, index: true
|
|
t.text :arguments
|
|
t.integer :priority, default: 0, null: false
|
|
t.string :active_job_id, index: true
|
|
t.datetime :scheduled_at
|
|
t.datetime :finished_at, index: true
|
|
t.string :concurrency_key
|
|
|
|
t.timestamps
|
|
|
|
t.index [ :queue_name, :finished_at ], name: "index_solid_queue_jobs_for_filtering"
|
|
t.index [ :scheduled_at, :finished_at ], name: "index_solid_queue_jobs_for_alerting"
|
|
end
|
|
|
|
create_table :solid_queue_scheduled_executions do |t|
|
|
t.references :job, index: { unique: true }, null: false
|
|
t.string :queue_name, null: false
|
|
t.integer :priority, default: 0, null: false
|
|
t.datetime :scheduled_at, null: false
|
|
|
|
t.datetime :created_at, null: false
|
|
|
|
t.index [ :scheduled_at, :priority, :job_id ], name: "index_solid_queue_dispatch_all"
|
|
end
|
|
|
|
create_table :solid_queue_ready_executions do |t|
|
|
t.references :job, index: { unique: true }, null: false
|
|
t.string :queue_name, null: false
|
|
t.integer :priority, default: 0, null: false
|
|
|
|
t.datetime :created_at, null: false
|
|
|
|
t.index [ :priority, :job_id ], name: "index_solid_queue_poll_all"
|
|
t.index [ :queue_name, :priority, :job_id ], name: "index_solid_queue_poll_by_queue"
|
|
end
|
|
|
|
create_table :solid_queue_claimed_executions do |t|
|
|
t.references :job, index: { unique: true }, null: false
|
|
t.bigint :process_id
|
|
t.datetime :created_at, null: false
|
|
|
|
t.index [ :process_id, :job_id ]
|
|
end
|
|
|
|
create_table :solid_queue_blocked_executions do |t|
|
|
t.references :job, index: { unique: true }, null: false
|
|
t.string :queue_name, null: false
|
|
t.integer :priority, default: 0, null: false
|
|
t.string :concurrency_key, null: false
|
|
t.datetime :expires_at, null: false
|
|
|
|
t.datetime :created_at, null: false
|
|
|
|
t.index [ :expires_at, :concurrency_key ], name: "index_solid_queue_blocked_executions_for_maintenance"
|
|
end
|
|
|
|
create_table :solid_queue_failed_executions do |t|
|
|
t.references :job, index: { unique: true }, null: false
|
|
t.text :error
|
|
t.datetime :created_at, null: false
|
|
end
|
|
|
|
create_table :solid_queue_pauses do |t|
|
|
t.string :queue_name, null: false, index: { unique: true }
|
|
t.datetime :created_at, null: false
|
|
end
|
|
|
|
create_table :solid_queue_processes do |t|
|
|
t.string :kind, null: false
|
|
t.datetime :last_heartbeat_at, null: false, index: true
|
|
t.bigint :supervisor_id, index: true
|
|
|
|
t.integer :pid, null: false
|
|
t.string :hostname
|
|
t.text :metadata
|
|
|
|
t.datetime :created_at, null: false
|
|
end
|
|
|
|
create_table :solid_queue_semaphores do |t|
|
|
t.string :key, null: false, index: { unique: true }
|
|
t.integer :value, default: 1, null: false
|
|
t.datetime :expires_at, null: false, index: true
|
|
|
|
t.timestamps
|
|
|
|
t.index [ :key, :value ], name: "index_solid_queue_semaphores_on_key_and_value"
|
|
end
|
|
|
|
add_foreign_key :solid_queue_blocked_executions, :solid_queue_jobs, column: :job_id, on_delete: :cascade
|
|
add_foreign_key :solid_queue_claimed_executions, :solid_queue_jobs, column: :job_id, on_delete: :cascade
|
|
add_foreign_key :solid_queue_failed_executions, :solid_queue_jobs, column: :job_id, on_delete: :cascade
|
|
add_foreign_key :solid_queue_ready_executions, :solid_queue_jobs, column: :job_id, on_delete: :cascade
|
|
add_foreign_key :solid_queue_scheduled_executions, :solid_queue_jobs, column: :job_id, on_delete: :cascade
|
|
end
|
|
end
|