# Copyright (C) 2024 Manuel Bustillo # Copyright (C) 2024-2025 LibreWeddingPlanner contributors class SolidQueueInstall < ActiveRecord::Migration[7.2] def change create_table 'solid_queue_blocked_executions', force: :cascade do |t| t.bigint 'job_id', 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 %w[concurrency_key priority job_id], name: 'index_solid_queue_blocked_executions_for_release' t.index %w[expires_at concurrency_key], name: 'index_solid_queue_blocked_executions_for_maintenance' t.index ['job_id'], name: 'index_solid_queue_blocked_executions_on_job_id', unique: true end create_table 'solid_queue_claimed_executions', force: :cascade do |t| t.bigint 'job_id', null: false t.bigint 'process_id' t.datetime 'created_at', null: false t.index ['job_id'], name: 'index_solid_queue_claimed_executions_on_job_id', unique: true t.index %w[process_id job_id], name: 'index_solid_queue_claimed_executions_on_process_id_and_job_id' end create_table 'solid_queue_failed_executions', force: :cascade do |t| t.bigint 'job_id', null: false t.text 'error' t.datetime 'created_at', null: false t.index ['job_id'], name: 'index_solid_queue_failed_executions_on_job_id', unique: true end create_table 'solid_queue_jobs', force: :cascade do |t| t.string 'queue_name', null: false t.string 'class_name', null: false t.text 'arguments' t.integer 'priority', default: 0, null: false t.string 'active_job_id' t.datetime 'scheduled_at' t.datetime 'finished_at' t.string 'concurrency_key' t.datetime 'created_at', null: false t.datetime 'updated_at', null: false t.index ['active_job_id'], name: 'index_solid_queue_jobs_on_active_job_id' t.index ['class_name'], name: 'index_solid_queue_jobs_on_class_name' t.index ['finished_at'], name: 'index_solid_queue_jobs_on_finished_at' t.index %w[queue_name finished_at], name: 'index_solid_queue_jobs_for_filtering' t.index %w[scheduled_at finished_at], name: 'index_solid_queue_jobs_for_alerting' end create_table 'solid_queue_pauses', force: :cascade do |t| t.string 'queue_name', null: false t.datetime 'created_at', null: false t.index ['queue_name'], name: 'index_solid_queue_pauses_on_queue_name', unique: true end create_table 'solid_queue_processes', force: :cascade do |t| t.string 'kind', null: false t.datetime 'last_heartbeat_at', null: false t.bigint 'supervisor_id' t.integer 'pid', null: false t.string 'hostname' t.text 'metadata' t.datetime 'created_at', null: false t.string 'name', null: false t.index ['last_heartbeat_at'], name: 'index_solid_queue_processes_on_last_heartbeat_at' t.index %w[name supervisor_id], name: 'index_solid_queue_processes_on_name_and_supervisor_id', unique: true t.index ['supervisor_id'], name: 'index_solid_queue_processes_on_supervisor_id' end create_table 'solid_queue_ready_executions', force: :cascade do |t| t.bigint 'job_id', null: false t.string 'queue_name', null: false t.integer 'priority', default: 0, null: false t.datetime 'created_at', null: false t.index ['job_id'], name: 'index_solid_queue_ready_executions_on_job_id', unique: true t.index %w[priority job_id], name: 'index_solid_queue_poll_all' t.index %w[queue_name priority job_id], name: 'index_solid_queue_poll_by_queue' end create_table 'solid_queue_recurring_executions', force: :cascade do |t| t.bigint 'job_id', null: false t.string 'task_key', null: false t.datetime 'run_at', null: false t.datetime 'created_at', null: false t.index ['job_id'], name: 'index_solid_queue_recurring_executions_on_job_id', unique: true t.index %w[task_key run_at], name: 'index_solid_queue_recurring_executions_on_task_key_and_run_at', unique: true end create_table 'solid_queue_recurring_tasks', force: :cascade do |t| t.string 'key', null: false t.string 'schedule', null: false t.string 'command', limit: 2048 t.string 'class_name' t.text 'arguments' t.string 'queue_name' t.integer 'priority', default: 0 t.boolean 'static', default: true, null: false t.text 'description' t.datetime 'created_at', null: false t.datetime 'updated_at', null: false t.index ['key'], name: 'index_solid_queue_recurring_tasks_on_key', unique: true t.index ['static'], name: 'index_solid_queue_recurring_tasks_on_static' end create_table 'solid_queue_scheduled_executions', force: :cascade do |t| t.bigint 'job_id', 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 ['job_id'], name: 'index_solid_queue_scheduled_executions_on_job_id', unique: true t.index %w[scheduled_at priority job_id], name: 'index_solid_queue_dispatch_all' end create_table 'solid_queue_semaphores', force: :cascade do |t| t.string 'key', null: false t.integer 'value', default: 1, null: false t.datetime 'expires_at', null: false t.datetime 'created_at', null: false t.datetime 'updated_at', null: false t.index ['expires_at'], name: 'index_solid_queue_semaphores_on_expires_at' t.index %w[key value], name: 'index_solid_queue_semaphores_on_key_and_value' t.index ['key'], name: 'index_solid_queue_semaphores_on_key', unique: true 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_recurring_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