31 lines
688 B
Python
31 lines
688 B
Python
from math import ceil
|
|
from typing import Any
|
|
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
def success_response(data: Any = None, message: str = "ok", status_code: int = 200) -> JSONResponse:
|
|
return JSONResponse(
|
|
status_code=status_code,
|
|
content={"code": 0, "message": message, "data": data},
|
|
)
|
|
|
|
|
|
def paginated_response(
|
|
items: list[Any],
|
|
*,
|
|
total: int,
|
|
page: int,
|
|
page_size: int,
|
|
) -> JSONResponse:
|
|
return success_response(
|
|
{
|
|
"items": items,
|
|
"page": page,
|
|
"pageSize": page_size,
|
|
"total": total,
|
|
"totalPages": ceil(total / page_size) if page_size else 1,
|
|
}
|
|
)
|
|
|