mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-22 13:05:18 +00:00
- 将前端API路径从`system`和`monitor`重命名为`module_system`和`module_monitor` - 移除MongoDB相关配置和依赖 - 统一数据库类型命名为`mysql`和`postgres` - 修复代码生成模板中的字段命名问题 - 更新依赖项并移除不必要的包 - 优化数据库连接配置 - 添加新的文档和Redoc视图组件 - 修复SQL脚本中的字段注释
98 lines
5.1 KiB
Python
98 lines
5.1 KiB
Python
# -*- coding:utf-8 -*-
|
|
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
|
|
from app.core.base_schema import BaseSchema
|
|
|
|
|
|
class GenDBTableSchema(BaseModel):
|
|
"""数据库中的表信息(跨方言统一结构)。
|
|
- 供“导入表结构”与“同步结构”环节使用。
|
|
"""
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
database_name: Optional[str] = Field(default=None, description='数据库名称')
|
|
table_name: Optional[str] = Field(default=None, description='表名称')
|
|
table_type: Optional[str] = Field(default=None, description='表类型')
|
|
table_comment: Optional[str] = Field(default=None, description='表描述')
|
|
|
|
|
|
class GenTableSchema(BaseModel):
|
|
"""代码生成业务表更新模型(扩展聚合字段)。
|
|
- 聚合:`columns`字段包含字段列表;`pk_column`主键字段;子表结构`sub_table`。
|
|
"""
|
|
"""代码生成业务表基础模型(创建/更新共享字段)。
|
|
- 说明:`params`为前端结构体,后端持久化为`options`的JSON。
|
|
"""
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
table_name: str= Field(..., description='表名称')
|
|
table_comment: Optional[str] = Field(default=None, description='表描述')
|
|
class_name: Optional[str] = Field(default=None, description='实体类名称')
|
|
package_name: Optional[str] = Field(default=None, description='生成包路径')
|
|
module_name: Optional[str] = Field(default=None, description='生成模块名')
|
|
business_name: Optional[str] = Field(default=None, description='生成业务名')
|
|
function_name: Optional[str] = Field(default=None, description='生成功能名')
|
|
sub_table_name: Optional[str] = Field(default=None, description='关联子表的表名')
|
|
sub_table_fk_name: Optional[str] = Field(default=None, description='子表关联的外键名')
|
|
parent_menu_id: Optional[int] = Field(default=None, description='所属父级分类,生成页面时候生成菜单使用')
|
|
description: Optional[str] = Field(default=None, max_length=255, description="描述")
|
|
|
|
columns: Optional[List['GenTableColumnOutSchema']] = Field(default=None, description='表列信息')
|
|
|
|
@field_validator('table_name')
|
|
@classmethod
|
|
def table_name_update(cls, v: str) -> str:
|
|
"""更新表名称"""
|
|
if not v:
|
|
raise ValueError('表名称不能为空')
|
|
return v
|
|
|
|
|
|
class GenTableOutSchema(GenTableSchema, BaseSchema):
|
|
"""业务表输出模型(面向控制器/前端)。
|
|
"""
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
pk_column: Optional['GenTableColumnOutSchema'] = Field(default=None, description='主键信息')
|
|
sub_table: Optional['GenTableSchema'] = Field(default=None, description='子表信息')
|
|
sub: Optional[bool] = Field(default=None, description='是否为子表')
|
|
|
|
|
|
class GenTableColumnSchema(BaseModel):
|
|
"""代码生成业务表字段创建模型(原始字段+生成配置)。
|
|
- 从根本上解决问题:所有字段都设置了合理的默认值,避免None值问题
|
|
"""
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
table_id: int = Field(default=0, description='归属表编号')
|
|
column_name: str = Field(default='', description='列名称')
|
|
column_comment: Optional[str] = Field(default='', description='列描述')
|
|
column_type: str = Field(default='varchar(255)', description='列类型')
|
|
column_length: Optional[str] = Field(default='', description='列长度')
|
|
column_default: Optional[str] = Field(default='', description='列默认值')
|
|
is_pk: bool = Field(default=False, description='是否主键(True是 False否)')
|
|
is_increment: bool = Field(default=False, description='是否自增(True是 False否)')
|
|
is_nullable: bool = Field(default=True, description='是否允许为空(True是 False否)')
|
|
is_unique: bool = Field(default=False, description='是否唯一(True是 False否)')
|
|
python_type: Optional[str] = Field(default='str', description='python类型')
|
|
python_field: Optional[str] = Field(default='', description='python字段名')
|
|
is_insert: bool = Field(default=True, description='是否为插入字段(True是 False否)')
|
|
is_edit: bool = Field(default=True, description='是否编辑字段(True是 False否)')
|
|
is_list: bool = Field(default=True, description='是否列表字段(True是 False否)')
|
|
is_query: bool = Field(default=True, description='是否查询字段(True是 False否)')
|
|
query_type: Optional[str] = Field(default=None, description='查询方式(等于、不等于、大于、小于、范围)')
|
|
html_type: Optional[str] = Field(default='input', description='显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)')
|
|
dict_type: Optional[str] = Field(default='', description='字典类型')
|
|
sort: int = Field(default=0, description='排序')
|
|
|
|
|
|
class GenTableColumnOutSchema(GenTableColumnSchema, BaseSchema):
|
|
"""
|
|
业务表字段输出模型
|
|
"""
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
super_column: Optional[str] = Field(default='0', description='是否为基类字段(1是 0否)') |