fix(progress): accept workplan_id filter alongside legacy workstream_id
STATE-WP-0065 renamed progress_event.workstream_id to workplan_id in state-hub; the list endpoint now maps both query params to the model column.
This commit is contained in:
parent
24301ccd60
commit
699ef15ee2
1 changed files with 14 additions and 1 deletions
|
|
@ -28,6 +28,7 @@ def create_progress_router(
|
||||||
*,
|
*,
|
||||||
topic_id: uuid.UUID | None = None,
|
topic_id: uuid.UUID | None = None,
|
||||||
workstream_id: uuid.UUID | None = None,
|
workstream_id: uuid.UUID | None = None,
|
||||||
|
workplan_id: uuid.UUID | None = None,
|
||||||
task_id: uuid.UUID | None = None,
|
task_id: uuid.UUID | None = None,
|
||||||
decision_id: uuid.UUID | None = None,
|
decision_id: uuid.UUID | None = None,
|
||||||
event_type: str | None = None,
|
event_type: str | None = None,
|
||||||
|
|
@ -37,9 +38,9 @@ def create_progress_router(
|
||||||
offset: int = 0,
|
offset: int = 0,
|
||||||
) -> list[Any]:
|
) -> list[Any]:
|
||||||
q = select(progress_model)
|
q = select(progress_model)
|
||||||
|
scope_id = workplan_id if workplan_id is not None else workstream_id
|
||||||
for field, value in (
|
for field, value in (
|
||||||
("topic_id", topic_id),
|
("topic_id", topic_id),
|
||||||
("workstream_id", workstream_id),
|
|
||||||
("task_id", task_id),
|
("task_id", task_id),
|
||||||
("decision_id", decision_id),
|
("decision_id", decision_id),
|
||||||
):
|
):
|
||||||
|
|
@ -51,6 +52,16 @@ def create_progress_router(
|
||||||
detail=f"Progress events do not support filtering by {field}",
|
detail=f"Progress events do not support filtering by {field}",
|
||||||
)
|
)
|
||||||
q = q.where(column == value)
|
q = q.where(column == value)
|
||||||
|
if scope_id is not None:
|
||||||
|
column = getattr(progress_model, "workplan_id", None) or getattr(
|
||||||
|
progress_model, "workstream_id", None
|
||||||
|
)
|
||||||
|
if column is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=400,
|
||||||
|
detail="Progress events do not support filtering by workplan_id",
|
||||||
|
)
|
||||||
|
q = q.where(column == scope_id)
|
||||||
if event_type:
|
if event_type:
|
||||||
q = q.where(progress_model.event_type == event_type)
|
q = q.where(progress_model.event_type == event_type)
|
||||||
if event_types is not None:
|
if event_types is not None:
|
||||||
|
|
@ -66,6 +77,7 @@ def create_progress_router(
|
||||||
async def list_progress(
|
async def list_progress(
|
||||||
topic_id: uuid.UUID | None = None,
|
topic_id: uuid.UUID | None = None,
|
||||||
workstream_id: uuid.UUID | None = None,
|
workstream_id: uuid.UUID | None = None,
|
||||||
|
workplan_id: uuid.UUID | None = None,
|
||||||
task_id: uuid.UUID | None = None,
|
task_id: uuid.UUID | None = None,
|
||||||
decision_id: uuid.UUID | None = None,
|
decision_id: uuid.UUID | None = None,
|
||||||
event_type: str | None = None,
|
event_type: str | None = None,
|
||||||
|
|
@ -78,6 +90,7 @@ def create_progress_router(
|
||||||
session,
|
session,
|
||||||
topic_id=topic_id,
|
topic_id=topic_id,
|
||||||
workstream_id=workstream_id,
|
workstream_id=workstream_id,
|
||||||
|
workplan_id=workplan_id,
|
||||||
task_id=task_id,
|
task_id=task_id,
|
||||||
decision_id=decision_id,
|
decision_id=decision_id,
|
||||||
event_type=event_type,
|
event_type=event_type,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue