Fix MissingGreenlet on subtask serialization
Chain second-level selectinload(ProjectTask.subtasks) on task create, update, and list endpoints. Pydantic's recursive ProjectTaskResponse schema accesses .subtasks on each subtask, which triggers lazy loading without eager load. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ccfbf6df96
commit
81edf81d13
@ -128,7 +128,7 @@ async def get_project_tasks(
|
|||||||
|
|
||||||
query = (
|
query = (
|
||||||
select(ProjectTask)
|
select(ProjectTask)
|
||||||
.options(selectinload(ProjectTask.subtasks))
|
.options(selectinload(ProjectTask.subtasks).selectinload(ProjectTask.subtasks))
|
||||||
.where(
|
.where(
|
||||||
ProjectTask.project_id == project_id,
|
ProjectTask.project_id == project_id,
|
||||||
ProjectTask.parent_task_id.is_(None),
|
ProjectTask.parent_task_id.is_(None),
|
||||||
@ -180,7 +180,7 @@ async def create_project_task(
|
|||||||
# Re-fetch with subtasks loaded
|
# Re-fetch with subtasks loaded
|
||||||
query = (
|
query = (
|
||||||
select(ProjectTask)
|
select(ProjectTask)
|
||||||
.options(selectinload(ProjectTask.subtasks))
|
.options(selectinload(ProjectTask.subtasks).selectinload(ProjectTask.subtasks))
|
||||||
.where(ProjectTask.id == new_task.id)
|
.where(ProjectTask.id == new_task.id)
|
||||||
)
|
)
|
||||||
result = await db.execute(query)
|
result = await db.execute(query)
|
||||||
@ -217,7 +217,7 @@ async def update_project_task(
|
|||||||
# Re-fetch with subtasks loaded
|
# Re-fetch with subtasks loaded
|
||||||
query = (
|
query = (
|
||||||
select(ProjectTask)
|
select(ProjectTask)
|
||||||
.options(selectinload(ProjectTask.subtasks))
|
.options(selectinload(ProjectTask.subtasks).selectinload(ProjectTask.subtasks))
|
||||||
.where(ProjectTask.id == task_id)
|
.where(ProjectTask.id == task_id)
|
||||||
)
|
)
|
||||||
result = await db.execute(query)
|
result = await db.execute(query)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user