fix: preserve tasks when archiving lists
This commit is contained in:
+19
-16
@@ -398,20 +398,6 @@ async def delete_list(
|
||||
item = await _owned_list(db, user.id, list_id)
|
||||
if item.is_inbox:
|
||||
raise HTTPException(status_code=409, detail="系统收集箱不能删除")
|
||||
inbox_id = await db.scalar(
|
||||
select(TaskList.id).where(
|
||||
TaskList.user_id == user.id,
|
||||
TaskList.is_inbox.is_(True),
|
||||
TaskList.deleted_at.is_(None),
|
||||
)
|
||||
)
|
||||
if inbox_id is None:
|
||||
raise HTTPException(status_code=409, detail="系统收集箱不存在")
|
||||
await db.execute(
|
||||
update(Task)
|
||||
.where(Task.user_id == user.id, Task.list_id == item.id, Task.deleted_at.is_(None))
|
||||
.values(list_id=inbox_id, version=Task.version + 1, updated_at=utcnow())
|
||||
)
|
||||
item.deleted_at = utcnow()
|
||||
await db.commit()
|
||||
return Response(status_code=204)
|
||||
@@ -507,7 +493,16 @@ async def list_tasks(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
query = select(Task).where(
|
||||
Task.user_id == user.id, Task.deleted_at.is_(None), Task.parent_id.is_(None)
|
||||
Task.user_id == user.id,
|
||||
Task.deleted_at.is_(None),
|
||||
Task.parent_id.is_(None),
|
||||
exists(
|
||||
select(TaskList.id).where(
|
||||
TaskList.id == Task.list_id,
|
||||
TaskList.user_id == user.id,
|
||||
TaskList.deleted_at.is_(None),
|
||||
)
|
||||
),
|
||||
)
|
||||
if list_id is not None:
|
||||
await _owned_list(db, user.id, list_id)
|
||||
@@ -617,7 +612,15 @@ async def get_task(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
task = await db.scalar(
|
||||
select(Task).where(Task.id == task_id, Task.user_id == user.id, Task.deleted_at.is_(None))
|
||||
select(Task)
|
||||
.join(TaskList, TaskList.id == Task.list_id)
|
||||
.where(
|
||||
Task.id == task_id,
|
||||
Task.user_id == user.id,
|
||||
Task.deleted_at.is_(None),
|
||||
TaskList.user_id == user.id,
|
||||
TaskList.deleted_at.is_(None),
|
||||
)
|
||||
)
|
||||
if task is None:
|
||||
raise HTTPException(status_code=404, detail="任务不存在")
|
||||
|
||||
Reference in New Issue
Block a user