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>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""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")
|
||||
Reference in New Issue
Block a user