This commit is contained in:
@@ -173,6 +173,31 @@ async def me(user: User = Depends(current_user)):
|
||||
return user
|
||||
|
||||
|
||||
@app.get("/api/v1/bootstrap")
|
||||
async def bootstrap_data(user: User = Depends(current_user), db: AsyncSession = Depends(get_db)):
|
||||
folders = list((await db.scalars(
|
||||
select(Folder)
|
||||
.where(Folder.user_id == user.id, Folder.deleted_at.is_(None))
|
||||
.order_by(Folder.position, Folder.created_at)
|
||||
)).all())
|
||||
lists = list((await db.scalars(
|
||||
select(TaskList)
|
||||
.where(TaskList.user_id == user.id, TaskList.deleted_at.is_(None))
|
||||
.order_by(TaskList.is_inbox.desc(), TaskList.position, TaskList.created_at)
|
||||
)).all())
|
||||
tags = list((await db.scalars(
|
||||
select(Tag).where(Tag.user_id == user.id).order_by(Tag.name, Tag.id)
|
||||
)).all())
|
||||
inbox = next((item for item in lists if item.is_inbox), None)
|
||||
return {
|
||||
"user": UserOut.model_validate(user),
|
||||
"folders": [FolderOut.model_validate(item) for item in folders],
|
||||
"lists": [ListOut.model_validate(item) for item in lists],
|
||||
"tags": [TagOut.model_validate(item) for item in tags],
|
||||
"inbox_id": inbox.id if inbox else None,
|
||||
}
|
||||
|
||||
|
||||
@app.post("/api/v1/auth/logout", status_code=204)
|
||||
async def logout(
|
||||
response: Response,
|
||||
|
||||
Reference in New Issue
Block a user