# 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