From 627e8302d71b1342691d88fb0ec3535652f2c693 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Thu, 4 Jun 2026 00:06:21 +0000 Subject: [PATCH] Upload app/schemas/common.py --- app/schemas/common.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 app/schemas/common.py diff --git a/app/schemas/common.py b/app/schemas/common.py new file mode 100644 index 0000000..dad3865 --- /dev/null +++ b/app/schemas/common.py @@ -0,0 +1,30 @@ +"""Common Pydantic schemas: pagination.""" + +from __future__ import annotations + +from typing import Generic, List, Optional, TypeVar + +from pydantic import BaseModel, ConfigDict, Field + +T = TypeVar("T") + + +class PaginationParams(BaseModel): + """Standard pagination query params.""" + + skip: int = Field(default=0, ge=0) + limit: int = Field(default=20, ge=1, le=100) + + +class PaginatedResponse(BaseModel, Generic[T]): + """Generic paginated response.""" + + model_config = ConfigDict(from_attributes=True) + + items: List[T] # type: ignore[valid-type] + total: int + skip: int + limit: int + + +__all__ = ["PaginatedResponse", "PaginationParams"]