mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-03-16 14:47:33 +08:00
Add naming_convention to Base.metadata so Alembic batch-mode reflection can match unnamed FK constraints created by migration 0002. Pass naming_convention and render_as_batch=True through env.py online config. Add migration roundtrip tests (upgrade/downgrade/cycle from baseline). Amp-Thread-ID: https://ampcode.com/threads/T-019ce466-1683-7471-b6e1-bb078223cda0 Co-authored-by: Amp <amp@ampcode.com>
67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
"""
|
|
Add system_metadata and prompt_id columns to asset_references.
|
|
Change preview_id FK from assets.id to asset_references.id.
|
|
|
|
Revision ID: 0003_add_metadata_prompt
|
|
Revises: 0002_merge_to_asset_references
|
|
Create Date: 2026-03-09
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
from app.database.models import NAMING_CONVENTION
|
|
|
|
revision = "0003_add_metadata_prompt"
|
|
down_revision = "0002_merge_to_asset_references"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
with op.batch_alter_table("asset_references") as batch_op:
|
|
batch_op.add_column(
|
|
sa.Column("system_metadata", sa.JSON(), nullable=True)
|
|
)
|
|
batch_op.add_column(
|
|
sa.Column("prompt_id", sa.String(length=36), nullable=True)
|
|
)
|
|
|
|
# Change preview_id FK from assets.id to asset_references.id (self-ref).
|
|
# Existing values are asset-content IDs that won't match reference IDs,
|
|
# so null them out first.
|
|
op.execute("UPDATE asset_references SET preview_id = NULL WHERE preview_id IS NOT NULL")
|
|
with op.batch_alter_table(
|
|
"asset_references", naming_convention=NAMING_CONVENTION
|
|
) as batch_op:
|
|
batch_op.drop_constraint(
|
|
"fk_asset_references_preview_id_assets", type_="foreignkey"
|
|
)
|
|
batch_op.create_foreign_key(
|
|
"fk_asset_references_preview_id_asset_references",
|
|
"asset_references",
|
|
["preview_id"],
|
|
["id"],
|
|
ondelete="SET NULL",
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
with op.batch_alter_table(
|
|
"asset_references", naming_convention=NAMING_CONVENTION
|
|
) as batch_op:
|
|
batch_op.drop_constraint(
|
|
"fk_asset_references_preview_id_asset_references", type_="foreignkey"
|
|
)
|
|
batch_op.create_foreign_key(
|
|
"fk_asset_references_preview_id_assets",
|
|
"assets",
|
|
["preview_id"],
|
|
["id"],
|
|
ondelete="SET NULL",
|
|
)
|
|
|
|
with op.batch_alter_table("asset_references") as batch_op:
|
|
batch_op.drop_column("prompt_id")
|
|
batch_op.drop_column("system_metadata")
|