Files
badoHair_be/app/core/responses.py
belviskhoremk d2dc43b16f Initial Commit
2026-05-12 00:34:21 +00:00

43 lines
886 B
Python

from typing import Any, TypeVar, Generic
from pydantic import BaseModel
T = TypeVar("T")
class ErrorDetail(BaseModel):
code: str
message: str
details: Any = None
class APIResponse(BaseModel, Generic[T]):
success: bool
data: T | None = None
error: ErrorDetail | None = None
class PaginationMeta(BaseModel):
total: int
page: int
per_page: int
pages: int
class PaginatedAPIResponse(BaseModel, Generic[T]):
success: bool = True
data: list[T] = []
meta: PaginationMeta
def ok(data: Any = None) -> dict:
return {"success": True, "data": data}
def paginated(data: list, total: int, page: int, per_page: int) -> dict:
pages = max(1, (total + per_page - 1) // per_page)
return {
"success": True,
"data": data,
"meta": {"total": total, "page": page, "per_page": per_page, "pages": pages},
}