feat:增加分页功能
This commit is contained in:
@@ -11,6 +11,7 @@ from model.sys_user import SysUser
|
||||
from repositories.advisor_todo import AdvisorTodoRepo
|
||||
from schemas.advisor import TodoHandleReq
|
||||
from utils.exceptions import ForbiddenError, NotFoundError, ParamError
|
||||
from utils.pagination import normalize_pagination, pagination_result
|
||||
|
||||
|
||||
def _todo_item(t: AdvisorTodo) -> dict:
|
||||
@@ -36,15 +37,18 @@ async def list_todos(
|
||||
status: str | None = None,
|
||||
todo_type: str | None = None,
|
||||
page: int = 1,
|
||||
page_size: int = 20,
|
||||
page_size: int = 10,
|
||||
) -> dict:
|
||||
page, page_size, offset = normalize_pagination(page, page_size)
|
||||
repo = AdvisorTodoRepo(db)
|
||||
items = await repo.list_by_advisor(
|
||||
advisor_id=user.id, status=status, todo_type=todo_type,
|
||||
limit=page_size, offset=(page - 1) * page_size,
|
||||
limit=page_size, offset=offset,
|
||||
)
|
||||
total = await repo.count_by_advisor(advisor_id=user.id, status=status, todo_type=todo_type)
|
||||
return {"total": total, "page": page, "page_size": page_size, "items": [_todo_item(t) for t in items]}
|
||||
return pagination_result(
|
||||
[_todo_item(t) for t in items], total, page=page, page_size=page_size
|
||||
)
|
||||
|
||||
|
||||
async def handle_todo(db: AsyncSession, user: SysUser, todo_id: int, req: TodoHandleReq) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user