"""Store 端公开导航菜单查询 — /store/menus/{location}"""
from __future__ import annotations

from typing import Any
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select

from app.api.deps import get_db, get_tenant_by_domain
from app.core.models.navigation_menu import NavigationMenu

router = APIRouter(prefix="/store/menus", tags=["Store 导航菜单"])



class MenuPublicOut(BaseModel):
    id: int
    name: str
    location: str
    items: list[Any] = []
    meta: dict[str, Any] = {}


@router.get("/{location}", response_model=MenuPublicOut, summary="获取指定位置的活跃菜单")
async def get_menu_by_location(
    location: str,
    db: AsyncSession = Depends(get_db),
    tid: int = Depends(get_tenant_by_domain),
):
    """返回指定位置（header/footer）第一个活跃的菜单，菜单项供前台渲染。"""
    result = await db.execute(
        select(NavigationMenu).where(
            NavigationMenu.tenant_id == tid,
            NavigationMenu.location == location,
            NavigationMenu.is_active == True,
        ).order_by(NavigationMenu.id)
    )
    m = result.scalars().first()
    if not m:
        # 该位置未配置菜单属正常情况（前台导航可为空），返回空菜单而非 404，避免前端控制台噪声
        return MenuPublicOut(id=0, name="", location=location, items=[], meta={})
    return MenuPublicOut(id=m.id, name=m.name, location=m.location, items=m.items or [], meta=m.meta or {})
