2026-01-11 07:48:19 +08:00

42 lines
1.7 KiB
Python

"""
通用数据模型
"""
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="总页数")