chore(assets): drop the unused asset_meta table from migration 0007

This commit is contained in:
Simon Pinfold
2026-09-17 19:47:29 -07:00
parent 4d7e61b7d4
commit b9c428b6c5
4 changed files with 0 additions and 62 deletions
@@ -67,19 +67,6 @@ def upgrade() -> None:
op.create_index("ix_assets_name", "assets", ["name"])
op.create_index("ix_assets_created_at", "assets", ["created_at"])
op.create_index("ix_assets_preview_id", "assets", ["preview_id"])
op.create_table(
"asset_meta",
sa.Column("asset_id", sa.String(36), sa.ForeignKey("assets.id", ondelete="CASCADE"), primary_key=True),
sa.Column("key", sa.String(256), primary_key=True),
sa.Column("ordinal", sa.Integer(), primary_key=True),
sa.Column("val_str", sa.String(2048)), sa.Column("val_num", sa.Numeric(38, 10)),
sa.Column("val_bool", sa.Boolean()), sa.Column("val_json", sa.JSON()),
sa.CheckConstraint("val_str IS NOT NULL OR val_num IS NOT NULL OR val_bool IS NOT NULL OR val_json IS NOT NULL", name="ck_asset_meta_has_value"),
)
op.create_index("ix_asset_meta_key", "asset_meta", ["key"])
op.create_index("ix_asset_meta_key_val_str", "asset_meta", ["key", "val_str"])
op.create_index("ix_asset_meta_key_val_num", "asset_meta", ["key", "val_num"])
op.create_index("ix_asset_meta_key_val_bool", "asset_meta", ["key", "val_bool"])
op.create_table("asset_tags", sa.Column("asset_id", sa.String(36), sa.ForeignKey("assets.id", ondelete="CASCADE"), primary_key=True), sa.Column("tag_name", sa.String(512), sa.ForeignKey("tags.name", ondelete="RESTRICT"), primary_key=True), sa.Column("origin", sa.String(32), nullable=False), sa.Column("added_at", sa.DateTime(), nullable=False))
op.create_index("ix_asset_tags_tag_name", "asset_tags", ["tag_name"])
op.create_index("ix_asset_tags_asset_id", "asset_tags", ["asset_id"])
@@ -89,7 +76,6 @@ def upgrade() -> None:
def downgrade() -> None:
op.drop_table("asset_system_state")
op.drop_table("asset_tags")
op.drop_table("asset_meta")
op.drop_table("assets")
op.drop_table("asset_contents")
op.create_table(
-33
View File
@@ -10,7 +10,6 @@ from __future__ import annotations
import uuid
from datetime import datetime
from decimal import Decimal
from typing import Any
from sqlalchemy import (
@@ -21,8 +20,6 @@ from sqlalchemy import (
DateTime,
ForeignKey,
Index,
Integer,
Numeric,
String,
Text,
text,
@@ -103,9 +100,6 @@ class Asset(Base):
preview: Mapped[Asset | None] = relationship(
"Asset", foreign_keys=[preview_id], remote_side=lambda: [Asset.id]
)
metadata_entries: Mapped[list[AssetMeta]] = relationship(
back_populates="asset", cascade="all,delete-orphan", passive_deletes=True
)
tag_links: Mapped[list[AssetTag]] = relationship(
back_populates="asset", cascade="all,delete-orphan", passive_deletes=True
)
@@ -121,33 +115,6 @@ class Asset(Base):
)
class AssetMeta(Base):
__tablename__ = "asset_meta"
asset_id: Mapped[str] = mapped_column(
String(36), ForeignKey("assets.id", ondelete="CASCADE"), primary_key=True
)
key: Mapped[str] = mapped_column(String(256), primary_key=True)
ordinal: Mapped[int] = mapped_column(Integer, primary_key=True, default=0)
val_str: Mapped[str | None] = mapped_column(String(2048))
val_num: Mapped[Decimal | None] = mapped_column(Numeric(38, 10))
val_bool: Mapped[bool | None] = mapped_column(Boolean)
val_json: Mapped[Any | None] = mapped_column(JSON)
asset: Mapped[Asset] = relationship(back_populates="metadata_entries")
__table_args__ = (
Index("ix_asset_meta_key", "key"),
Index("ix_asset_meta_key_val_str", "key", "val_str"),
Index("ix_asset_meta_key_val_num", "key", "val_num"),
Index("ix_asset_meta_key_val_bool", "key", "val_bool"),
CheckConstraint(
"val_str IS NOT NULL OR val_num IS NOT NULL OR val_bool IS NOT NULL OR val_json IS NOT NULL",
name="ck_asset_meta_has_value",
),
)
class AssetTag(Base):
__tablename__ = "asset_tags"
@@ -95,7 +95,6 @@ def test_0007_invariants_on_migrated_db(db_at_0006):
def test_0007_orm_parity(db_at_0006, tmp_path):
from sqlalchemy import create_engine, inspect
import app.assets.database.models as asset_models
from app.database.models import Base
cfg, db_path = db_at_0006
@@ -109,26 +108,13 @@ def test_0007_orm_parity(db_at_0006, tmp_path):
)
}
alembic_engine = create_engine(f"sqlite:///{db_path}")
orm_db = str(tmp_path / "orm.db")
engine = create_engine(f"sqlite:///{orm_db}")
alembic_inspector = inspect(alembic_engine)
Base.metadata.create_all(engine)
orm_inspector = inspect(engine)
orm_tables = set(orm_inspector.get_table_names())
assert asset_models.AssetMeta.__tablename__ == "asset_meta"
alembic_indexes = {
(index["name"], tuple(index["column_names"]))
for index in alembic_inspector.get_indexes("asset_meta")
}
orm_indexes = {
(index.name, tuple(index.columns.keys()))
for index in Base.metadata.tables["asset_meta"].indexes
}
assert alembic_tables == orm_tables, f"Mismatch: alembic={alembic_tables}, orm={orm_tables}"
assert alembic_indexes == orm_indexes, f"Mismatch: alembic={alembic_indexes}, orm={orm_indexes}"
def test_0007_downgrade_chain_past_0003_succeeds(db_at_0006):
@@ -10,7 +10,6 @@ def assert_asset_metadata_tables():
assert set(Base.metadata.tables) == {
"assets",
"asset_contents",
"asset_meta",
"asset_tags",
"tags",
"asset_system_state",