c99976cc85
- Migration 052: indexes on media_assets(asset_type, created_at) and products(category_key, lagertyp) for efficient filter queries - GET /api/media/assets: JOINs media_assets→products→order_lines, filters by asset_type / category_key / render_status / q (ILIKE), paginated (page/page_size), returns total+pages count - New schemas: MediaAssetBrowseItem, MediaAssetBrowseResponse - frontend/src/api/media.ts: getMediaAssets(filters), typed interfaces - MediaBrowser.tsx: rewritten with sticky filter bar (debounced search, type/category/status dropdowns), responsive grid, image previews, download buttons, pagination footer with page size selector - Renamed legacy function to listMediaAssets for backward compat Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
32 lines
784 B
Python
32 lines
784 B
Python
"""Add indexes for media browser filtering.
|
|
|
|
Revision ID: 052
|
|
Revises: 051
|
|
"""
|
|
from alembic import op
|
|
|
|
revision = "052"
|
|
down_revision = "051"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# Index for filtering media_assets by asset_type + created_at ordering
|
|
op.create_index(
|
|
"ix_media_assets_asset_type_created",
|
|
"media_assets",
|
|
["asset_type", "created_at"],
|
|
)
|
|
# Index for filtering products by category + lagertyp
|
|
op.create_index(
|
|
"ix_products_category_lagertyp",
|
|
"products",
|
|
["category_key", "lagertyp"],
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_index("ix_products_category_lagertyp", table_name="products")
|
|
op.drop_index("ix_media_assets_asset_type_created", table_name="media_assets")
|