Tidy alembic migration version scripts

This commit is contained in:
CREDO23 2026-04-24 18:49:22 +02:00
parent d1080b1298
commit dfa6c0423d
2 changed files with 55 additions and 39 deletions

View file

@ -79,7 +79,11 @@ def _terminate_blocked_pids(conn, table: str) -> None:
def upgrade() -> None:
conn = op.get_bind()
# asyncpg requires LOCK TABLE inside a transaction block. Alembic already
# opened one via context.begin_transaction(), but the driver still errors
# unless we use an explicit SAVEPOINT (nested transaction) for this block.
tx = conn.begin_nested() if conn.in_transaction() else conn.begin()
with tx:
conn.execute(sa.text("SET lock_timeout = '10s'"))
for tbl in sorted(TABLES_WITH_FULL_IDENTITY):

View file

@ -12,8 +12,6 @@ from __future__ import annotations
from collections.abc import Sequence
import sqlalchemy as sa
from alembic import op
revision: str = "121"
@ -23,16 +21,30 @@ depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
op.add_column(
"user",
sa.Column("memory_md", sa.Text(), nullable=True, server_default=""),
)
op.add_column(
"searchspaces",
sa.Column("shared_memory_md", sa.Text(), nullable=True, server_default=""),
# Idempotent: column(s) may already exist after a failed run or manual DDL.
op.execute(
"""
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'user'
AND column_name = 'memory_md'
) THEN
ALTER TABLE "user" ADD COLUMN memory_md TEXT DEFAULT '';
END IF;
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'searchspaces'
AND column_name = 'shared_memory_md'
) THEN
ALTER TABLE searchspaces ADD COLUMN shared_memory_md TEXT DEFAULT '';
END IF;
END$$;
"""
)
def downgrade() -> None:
op.drop_column("searchspaces", "shared_memory_md")
op.drop_column("user", "memory_md")
op.execute("ALTER TABLE searchspaces DROP COLUMN IF EXISTS shared_memory_md")
op.execute('ALTER TABLE "user" DROP COLUMN IF EXISTS memory_md')