""" 通用数据模型 """ from typing import Optional, List from pydantic import BaseModel, Field class FieldInfo(BaseModel): """字段信息""" raw_name: str = Field(..., description="字段名(英文/原始名称)") display_name: Optional[str] = Field(None, description="字段显示名称(中文)") type: str = Field(..., description="字段类型") comment: Optional[str] = Field(None, description="字段注释") is_primary_key: bool = Field(False, description="是否为主键") is_nullable: bool = Field(True, description="是否可为空") default_value: Optional[str] = Field(None, description="默认值") class TableInfo(BaseModel): """表信息""" raw_name: str = Field(..., description="表名(英文/原始名称)") display_name: Optional[str] = Field(None, description="表显示名称(中文)") description: Optional[str] = Field(None, description="表描述") fields: List[FieldInfo] = Field(default_factory=list, description="字段列表") field_count: int = Field(0, description="字段数量") row_count: Optional[int] = Field(None, description="行数(如果已知)") source_file: Optional[str] = Field(None, description="来源文件") class PaginationParams(BaseModel): """分页参数""" page: int = Field(1, ge=1, description="页码") page_size: int = Field(20, ge=1, le=100, description="每页数量") class PaginationResponse(BaseModel): """分页响应""" total: int = Field(..., description="总数量") page: int = Field(..., description="当前页码") page_size: int = Field(..., description="每页数量") total_pages: int = Field(..., description="总页数")