state-hub/api/routers/progress.py

58 lines
1.7 KiB
Python
Raw Normal View History

from typing import Any
from fastapi import Request, Response
from sqlalchemy.ext.asyncio import AsyncSession
from api.database import get_session
from api.models.progress_event import ProgressEvent
from api.schemas.progress_event import ProgressEventCreate, ProgressEventRead
from api.services.legacy_compat import meter_legacy_body_field, meter_legacy_query_param
2026-06-07 14:29:12 +02:00
from hub_core.routers.progress import create_progress_router
async def _meter_progress_workstream_id_query(
session: AsyncSession,
request: Request,
response: Response,
) -> None:
await meter_legacy_query_param(
session=session,
request=request,
response=response,
method="GET",
route="/progress/",
replacement_ref="/progress/?workplan_id=<workplan_id>",
)
async def _meter_progress_workstream_id_body(
session: AsyncSession,
request: Request,
response: Response,
) -> None:
await meter_legacy_body_field(
session=session,
request=request,
response=response,
method="POST",
route="/progress/",
field="workstream_id",
replacement_ref="POST /progress/ with workplan_id",
)
def _progress_body_uses_legacy_workstream_id(body: Any) -> bool:
return bool(getattr(body, "used_legacy_workstream_id", False))
2026-06-07 14:29:12 +02:00
router = create_progress_router(
get_session,
progress_model=ProgressEvent,
progress_create_schema=ProgressEventCreate,
progress_read_schema=ProgressEventRead,
meter_legacy_workstream_id=_meter_progress_workstream_id_query,
progress_body_uses_legacy_workstream_id=_progress_body_uses_legacy_workstream_id,
meter_legacy_workstream_id_body=_meter_progress_workstream_id_body,
2026-06-07 14:29:12 +02:00
)
__all__ = ["router"]