from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from app.db import get_session from app.services.catalog import CatalogService router = APIRouter() @router.get("/feed/recommended") async def recommended_feed( topic: str | None = None, page_size: int = Query(20, ge=1, le=50), session: AsyncSession = Depends(get_session), ) -> dict: return await CatalogService(session).report_cards(topic=topic, page_size=page_size) @router.get("/reports") async def reports( topic: str | None = None, institution_id: str | None = None, has_audio: bool | None = None, source_tier: str | None = None, q: str | None = None, page_size: int = Query(20, ge=1, le=50), session: AsyncSession = Depends(get_session), ) -> dict: return await CatalogService(session).report_cards( topic=topic, institution_id=institution_id, has_audio=has_audio, source_tier=source_tier, q=q, page_size=page_size, ) @router.get("/reports/{report_id}") async def report_detail(report_id: str, session: AsyncSession = Depends(get_session)) -> dict: return await CatalogService(session).report_detail(report_id) @router.get("/reports/{report_id}/modules/{module_id}") async def module_detail(report_id: str, module_id: str, session: AsyncSession = Depends(get_session)) -> dict: return await CatalogService(session).module_detail(report_id, module_id)