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, } )