Add router jinja template for code generation (#1031)

This commit is contained in:
Wu Clan
2026-01-23 10:39:47 +08:00
committed by GitHub
parent 0aa63ed6e6
commit f2b246089d
5 changed files with 16 additions and 1 deletions

View File

@@ -20,5 +20,6 @@ class GenBusiness(Base):
filename: Mapped[str | None] = mapped_column(sa.String(64), default=None, comment='基础文件名')
datetime_mixin: Mapped[bool] = mapped_column(default=True, comment='是否包含时间 Mixin 列')
api_version: Mapped[str] = mapped_column(sa.String(32), default='v1', comment='API 版本')
tag: Mapped[str | None] = mapped_column(sa.String(64), default=None, comment='API 标签')
gen_path: Mapped[str | None] = mapped_column(sa.String(256), default=None, comment='生成路径')
remark: Mapped[str | None] = mapped_column(UniversalText, default=None, comment='备注')

View File

@@ -19,6 +19,7 @@ class GenBusinessSchemaBase(SchemaBase):
filename: str | None = Field(None, description='用于 python 代码基础文件名')
datetime_mixin: bool = Field(True, description='是否包含时间 Mixin 列')
api_version: str = Field('v1', description='API 版本')
tag: str | None = Field(None, description='API 标签(用于路由分组)')
gen_path: str | None = Field(None, description='生成路径(默认在 backend/app 目录下)')
remark: str | None = Field(None, description='备注')

View File

@@ -60,15 +60,17 @@ class GenService:
raise errors.ConflictError(msg='已存在相同数据库表业务')
table_name = table_info['table_name']
doc_comment = table_info['table_comment'] or table_name.split('_')[-1]
new_business = GenBusiness(
**CreateGenBusinessParam(
app_name=obj.app,
table_name=table_name,
doc_comment=table_info['table_comment'] or table_name.split('_')[-1],
doc_comment=doc_comment,
table_comment=table_info['table_comment'],
class_name=to_pascal(table_name),
schema_name=to_pascal(table_name),
filename=table_name,
tag=doc_comment,
).model_dump(),
)
db.add(new_business)

View File

@@ -0,0 +1,8 @@
from fastapi import APIRouter
from backend.app.{{ app_name }}.api.{{ api_version }}.{{ filename }} import router as {{ table_name }}_router
from backend.core.conf import settings
v1 = APIRouter(prefix=settings.FASTAPI_API_V1_PATH{% if tag %}, tags=['{{ tag }}']{% endif %})
v1.include_router({{ table_name }}_router, prefix='/{{ table_name.replace('_', '-') }}s')

View File

@@ -49,6 +49,7 @@ class GenTemplate:
return {
'python/api.jinja': f'{app_name}/api/{api_version}/{filename}.py',
'python/router.jinja': f'{app_name}/api/router.py',
'python/crud.jinja': f'{app_name}/crud/crud_{filename}.py',
'python/model.jinja': f'{app_name}/model/{filename}.py',
'python/schema.jinja': f'{app_name}/schema/{filename}.py',
@@ -99,6 +100,8 @@ class GenTemplate:
'schema_name': business.schema_name,
'filename': business.filename,
'datetime_mixin': business.datetime_mixin,
'api_version': business.api_version,
'tag': business.tag,
'permission': business.table_name.replace('_', ':'),
'database_type': settings.DATABASE_TYPE,
'models': models,