language-learning-app/api/alembic/versions/20260523_0019_add_procrastinate_schema.py

57 lines
2.6 KiB
Python
Raw Permalink Normal View History

"""add procrastinate schema
Revision ID: 0019
Revises: 0018
Create Date: 2026-05-23
"""
from typing import Sequence, Union
from alembic import op
revision: str = "0019"
down_revision: Union[str, None] = "0018"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
from procrastinate.schema import SchemaManager
from app.config import settings
import psycopg
schema_sql = SchemaManager.get_schema()
# asyncpg (used by SQLAlchemy async) cannot execute multi-statement DDL via
# its prepare() path, so we open a direct psycopg connection instead.
with psycopg.connect(settings.procrastinate_database_url, autocommit=True) as conn:
conn.execute(schema_sql)
def downgrade() -> None:
op.execute("""
DROP TABLE IF EXISTS procrastinate_events CASCADE;
DROP TABLE IF EXISTS procrastinate_periodic_defers CASCADE;
DROP TABLE IF EXISTS procrastinate_jobs CASCADE;
DROP TABLE IF EXISTS procrastinate_workers CASCADE;
DROP FUNCTION IF EXISTS procrastinate_defer_jobs_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_defer_periodic_job_v2 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_fetch_job_v2 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_finish_job_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_cancel_job_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_retry_job_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_retry_job_v2 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_notify_queue_job_inserted_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_notify_queue_abort_job_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_trigger_function_status_events_insert_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_trigger_function_status_events_update_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_trigger_function_scheduled_events_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_trigger_abort_requested_events_procedure_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_unlink_periodic_defers_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_register_worker_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_unregister_worker_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_update_heartbeat_v1 CASCADE;
DROP FUNCTION IF EXISTS procrastinate_prune_stalled_workers_v1 CASCADE;
DROP TYPE IF EXISTS procrastinate_job_to_defer_v1 CASCADE;
DROP TYPE IF EXISTS procrastinate_job_event_type CASCADE;
DROP TYPE IF EXISTS procrastinate_job_status CASCADE;
""")