from alembic import op revision = "0044" down_revision = "0043" branch_labels = None depends_on = None def upgrade(): op.execute(""" CREATE TABLE v3.export_job ( id uuid PRIMARY KEY, user_id integer NOT NULL REFERENCES v3.app_user(id), request jsonb NOT NULL, status varchar(20) NOT NULL, created_at timestamptz NOT NULL, started_at timestamptz, finished_at timestamptz, filename text, media_type text, file_path text, error text, CONSTRAINT export_job_status CHECK (status IN ('queued', 'processing', 'completed', 'failed')) ) """) op.execute("CREATE INDEX export_job_user ON v3.export_job(user_id, created_at)") op.execute(""" CREATE UNIQUE INDEX export_job_active_user ON v3.export_job(user_id) WHERE status IN ('queued', 'processing') """) def downgrade(): op.execute("DROP TABLE v3.export_job")