feat:重新初始化

This commit is contained in:
2025-09-23 15:13:29 +08:00
parent de43a551bc
commit 842da15886
31 changed files with 2500 additions and 0 deletions

42
schemas/pagination.py Normal file
View File

@@ -0,0 +1,42 @@
from typing import List, TypeVar, Generic
from pydantic import BaseModel, field_validator
class PaginationParams(BaseModel):
currentPage: int = 1 # 当前页码,从 1 开始
pageSize: int = 10 # 每页数据量
class Config:
validate_assignment = True
@field_validator("pageSize")
def limit_page_size(cls, v):
if v > 100:
raise ValueError("pageSize 最大为 100")
return v
T = TypeVar("T")
class PageResult(BaseModel, Generic[T]):
"""通用分页结果模型"""
current: int = 1 # 当前页码(从 1 开始)
size: int = 10 # 每页大小
total: int = 0 # 总记录数
pages: int = 0 # 总页数
records: List[T] = [] # 数据列表
@field_validator("size")
def validate_page_size(cls, v):
if v < 1:
raise ValueError("page_size 必须至少为 1")
if v > 1000:
raise ValueError("page_size 最大为 1000")
return v
@property
def offset(self) -> int:
"""计算偏移量"""
return (self.page - 1) * self.size