Files
HartOMat/backend/alembic/versions/052_media_browser_indexes.py
Hartmut c99976cc85 feat(phase7.2): media browser with server-side filters + pagination
- 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>
2026-03-08 20:24:03 +01:00

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")