fix(api): remove duplicate alembic migrations after merge
Drop legacy 0019_backfill_missing_columns and 0020_backfill_missing_schema chain so only 0019_align_legacy_schema remains as head.
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
"""补建缺失列:segments.audio_duration_seconds, conversations.deleted_at
|
||||
|
||||
0001 用 create_all 建表,对已有表不会 ALTER 追加列。
|
||||
本迁移补齐 ORM 模型中存在但生产库缺失的两列。
|
||||
|
||||
Revision ID: 0019_backfill_missing_columns
|
||||
Revises: 0018_users_language_preference
|
||||
"""
|
||||
|
||||
from typing import Sequence, Union
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
revision: str = "0019_backfill_missing_columns"
|
||||
down_revision: Union[str, None] = "0018_users_language_preference"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def _column_names(table_name: str) -> set[str]:
|
||||
bind = op.get_bind()
|
||||
inspector = sa.inspect(bind)
|
||||
return {column["name"] for column in inspector.get_columns(table_name)}
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
seg_cols = _column_names("segments")
|
||||
if "audio_duration_seconds" not in seg_cols:
|
||||
op.add_column(
|
||||
"segments",
|
||||
sa.Column("audio_duration_seconds", sa.Integer(), nullable=True),
|
||||
)
|
||||
|
||||
conv_cols = _column_names("conversations")
|
||||
if "deleted_at" not in conv_cols:
|
||||
op.add_column(
|
||||
"conversations",
|
||||
sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True),
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
conv_cols = _column_names("conversations")
|
||||
if "deleted_at" in conv_cols:
|
||||
op.drop_column("conversations", "deleted_at")
|
||||
|
||||
seg_cols = _column_names("segments")
|
||||
if "audio_duration_seconds" in seg_cols:
|
||||
op.drop_column("segments", "audio_duration_seconds")
|
||||
@@ -1,66 +0,0 @@
|
||||
"""补建所有 ORM 模型中存在但数据库缺失的列
|
||||
|
||||
0001 用 create_all 建表,对已有表不会 ALTER 追加列。
|
||||
本迁移自动内省 ORM 元数据与实际数据库 schema 的差异,
|
||||
为每张已有表补齐缺失列(不含 FK 约束,仅补列定义)。
|
||||
|
||||
Revision ID: 0020_backfill_all_missing_columns
|
||||
Revises: 0019_backfill_missing_columns
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Sequence, Union
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
revision: str = "0020_backfill_missing_schema"
|
||||
down_revision: Union[str, None] = "0019_backfill_missing_columns"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def _import_all_models() -> None:
|
||||
from app.features.asset import models as _asset # noqa: F401
|
||||
from app.features.auth import models as _auth # noqa: F401
|
||||
from app.features.conversation import models as _conv # noqa: F401
|
||||
from app.features.evaluation import models as _eval # noqa: F401
|
||||
from app.features.memory import models as _memory # noqa: F401
|
||||
from app.features.memoir import models as _memoir # noqa: F401
|
||||
from app.features.payment import models as _payment # noqa: F401
|
||||
from app.features.story import models as _story # noqa: F401
|
||||
from app.features.user import models as _user # noqa: F401
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
from app.core.db import Base
|
||||
|
||||
_import_all_models()
|
||||
|
||||
bind = op.get_bind()
|
||||
inspector = sa.inspect(bind)
|
||||
existing_tables = set(inspector.get_table_names())
|
||||
|
||||
for table in Base.metadata.sorted_tables:
|
||||
if table.name not in existing_tables:
|
||||
continue
|
||||
|
||||
db_cols = {c["name"] for c in inspector.get_columns(table.name)}
|
||||
|
||||
for col in table.columns:
|
||||
if col.name in db_cols:
|
||||
continue
|
||||
|
||||
kwargs: dict = {"nullable": True}
|
||||
|
||||
if col.server_default is not None:
|
||||
kwargs["server_default"] = col.server_default.arg
|
||||
|
||||
new_col = sa.Column(col.name, col.type, **kwargs)
|
||||
op.add_column(table.name, new_col)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
pass
|
||||
Reference in New Issue
Block a user