Files
fastapi_best_architecture/backend/plugin/code_generator/schema/business.py
Wu Clan 1a6aba6105 Optimize code generation data processing (#1020)
* Optimize code generation data processing

* Add SQL script generation

* Update code gen table scripts

* Update types

* Fix model jinja and type conversion
2026-01-20 18:27:42 +08:00

50 lines
2.0 KiB
Python

from datetime import datetime
from pydantic import ConfigDict, Field, field_validator
from backend.common.exception import errors
from backend.common.schema import SchemaBase
from backend.utils.pattern_validate import is_english_identifier
class GenBusinessSchemaBase(SchemaBase):
"""代码生成业务基础模型"""
app_name: str = Field(description='应用名称(英文)')
table_name: str = Field(description='表名称(英文)')
doc_comment: str = Field(description='文档注释(用于函数/参数文档)')
table_comment: str | None = Field(None, description='表描述')
class_name: str | None = Field(None, description='用于 python 代码基础类名')
schema_name: str | None = Field(None, description='用于 python Schema 代码基础类名')
filename: str | None = Field(None, description='用于 python 代码基础文件名')
datetime_mixin: bool = Field(True, description='是否包含时间 Mixin 列')
api_version: str = Field('v1', description='API 版本')
gen_path: str | None = Field(None, description='生成路径(默认在 backend/app 目录下)')
remark: str | None = Field(None, description='备注')
@field_validator('app_name', 'table_name')
@classmethod
def validate_english_only(cls, v: str) -> str:
"""验证英文字段"""
if not is_english_identifier(v):
raise errors.RequestError(msg='必须以英文字母开头且只能包含英文字母和下划线')
return v
class CreateGenBusinessParam(GenBusinessSchemaBase):
"""创建代码生成业务参数"""
class UpdateGenBusinessParam(GenBusinessSchemaBase):
"""更新代码生成业务参数"""
class GetGenBusinessDetail(GenBusinessSchemaBase):
"""获取代码生成业务详情"""
model_config = ConfigDict(from_attributes=True)
id: int = Field(description='主键 ID')
created_time: datetime = Field(description='创建时间')
updated_time: datetime | None = Field(None, description='更新时间')