chore: prepare yanting monorepo handoff
This commit is contained in:
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/health")
|
||||
async def health() -> dict[str, str]:
|
||||
return {"status": "ok"}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
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("/institutions")
|
||||
async def institutions(
|
||||
topic: str | None = None,
|
||||
source_tier: str | None = None,
|
||||
page_size: int = Query(20, ge=1, le=50),
|
||||
session: AsyncSession = Depends(get_session),
|
||||
) -> dict:
|
||||
return await CatalogService(session).institutions(topic=topic, source_tier=source_tier, page_size=page_size)
|
||||
|
||||
|
||||
@router.get("/institutions/{institution_id}")
|
||||
async def institution_detail(institution_id: str, session: AsyncSession = Depends(get_session)) -> dict:
|
||||
return await CatalogService(session).institution_detail(institution_id)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
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("/listen")
|
||||
async def listen(page_size: int = Query(20, ge=1, le=50), session: AsyncSession = Depends(get_session)) -> dict:
|
||||
return await CatalogService(session).listen_items(page_size=page_size)
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user