Skip to content

Commit 5842127

Browse files
authored
Update code generator table columns (#590)
* Update code generator table columns * Update func doc
1 parent 193eba3 commit 5842127

File tree

11 files changed

+93
-93
lines changed

11 files changed

+93
-93
lines changed

backend/plugin/code_generator/crud/crud_business.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ async def get_by_name(self, db: AsyncSession, name: str) -> GenBusiness | None:
3030
:param name: 表名
3131
:return:
3232
"""
33-
return await self.select_model_by_column(db, table_name_en=name)
33+
return await self.select_model_by_column(db, table_name=name)
3434

3535
async def get_all(self, db: AsyncSession) -> Sequence[GenBusiness]:
3636
"""

backend/plugin/code_generator/model/business.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ class GenBusiness(Base):
2020

2121
id: Mapped[id_key] = mapped_column(init=False)
2222
app_name: Mapped[str] = mapped_column(String(50), comment='应用名称(英文)')
23-
table_name_en: Mapped[str] = mapped_column(String(255), unique=True, comment='表名称(英文)')
24-
table_name_zh: Mapped[str] = mapped_column(String(255), comment='表名称(中文)')
25-
table_simple_name_zh: Mapped[str] = mapped_column(String(255), comment='表名称(中文简称)')
23+
table_name: Mapped[str] = mapped_column(String(255), unique=True, comment='表名称(英文)')
24+
doc_comment: Mapped[str] = mapped_column(String(255), comment='文档注释(用于函数/参数文档)')
2625
table_comment: Mapped[str | None] = mapped_column(String(255), default=None, comment='表描述')
2726
# relate_model_fk: Mapped[int | None] = mapped_column(default=None, comment='关联表外键')
28-
schema_name: Mapped[str | None] = mapped_column(String(255), default=None, comment='Schema 名称 (默认为英文表名称)')
29-
filename: Mapped[str | None] = mapped_column(String(20), default=None, comment='基础文件名(默认为英文表名称)')
27+
class_name: Mapped[str | None] = mapped_column(String(50), default=None, comment='基础类名(默认为英文表名称)')
28+
schema_name: Mapped[str | None] = mapped_column(String(50), default=None, comment='Schema 名称 (默认为英文表名称)')
29+
filename: Mapped[str | None] = mapped_column(String(50), default=None, comment='基础文件名(默认为英文表名称)')
3030
default_datetime_column: Mapped[bool] = mapped_column(default=True, comment='是否存在默认时间列')
3131
api_version: Mapped[str] = mapped_column(String(20), default='v1', comment='代码生成 api 版本,默认为 v1')
3232
gen_path: Mapped[str | None] = mapped_column(String(255), default=None, comment='代码生成路径(默认为 app 根路径)')

backend/plugin/code_generator/schema/business.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ class GenBusinessSchemaBase(SchemaBase):
1111
"""代码生成业务基础模型"""
1212

1313
app_name: str = Field(description='应用名称(英文)')
14-
table_name_en: str = Field(description='表名称(英文)')
15-
table_name_zh: str = Field(description='表名称(中文)')
16-
table_simple_name_zh: str = Field(description='表名称(中文简称)')
14+
table_name: str = Field(description='表名称(英文)')
15+
doc_comment: str = Field(description='文档注释(用于函数/参数文档)')
1716
table_comment: str | None = Field(None, description='表描述')
17+
class_name: str | None = Field(None, description='基础类名 (默认为英文表名称)')
1818
schema_name: str | None = Field(None, description='Schema 名称 (默认为英文表名称)')
1919
filename: str | None = Field(None, description='基础文件名(默认为英文表名称)')
2020
default_datetime_column: bool = Field(True, description='是否存在默认时间列')

backend/plugin/code_generator/service/business_service.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ async def create(*, obj: CreateGenBusinessParam) -> None:
4141
:return:
4242
"""
4343
async with async_db_session.begin() as db:
44-
business = await gen_business_dao.get_by_name(db, obj.table_name_en)
44+
business = await gen_business_dao.get_by_name(db, obj.table_name)
4545
if business:
4646
raise errors.ForbiddenError(msg='代码生成业务已存在')
4747
await gen_business_dao.create(db, obj)

backend/plugin/code_generator/service/gen_service.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ async def import_business_and_model(*, obj: ImportParam) -> None:
6161
new_business = GenBusiness(
6262
**CreateGenBusinessParam(
6363
app_name=obj.app,
64-
table_name_en=table_name,
65-
table_name_zh=table_info[1] or ' '.join(table_name.split('_')),
66-
table_simple_name_zh=table_info[1] or table_name.split('_')[-1],
64+
table_name=table_name,
65+
doc_comment=table_info[1] or table_name.split('_')[-1],
6766
table_comment=table_info[1],
67+
class_name=table_name,
6868
schema_name=table_name,
6969
filename=table_name,
7070
).model_dump()
@@ -194,8 +194,8 @@ async def generate(self, *, pk: int) -> None:
194194
if code_folder.name == 'model':
195195
async with aiofiles.open(init_filepath, 'a', encoding='utf-8') as f:
196196
await f.write(
197-
f'from backend.app.{business.app_name}.model.{business.table_name_en} '
198-
f'import {to_pascal(business.table_name_en)}\n',
197+
f'from backend.app.{business.app_name}.model.{business.table_name} '
198+
f'import {to_pascal(business.table_name)}\n',
199199
)
200200

201201
# 写入代码文件
@@ -229,8 +229,8 @@ async def download(self, *, pk: int) -> io.BytesIO:
229229
zf.writestr(
230230
init_filepath,
231231
f'{gen_template.init_content}'
232-
f'from backend.app.{business.app_name}.model.{business.table_name_en} '
233-
f'import {to_pascal(business.table_name_en)}\n',
232+
f'from backend.app.{business.app_name}.model.{business.table_name} '
233+
f'import {to_pascal(business.table_name)}\n',
234234
)
235235

236236
# api __init__.py

backend/plugin/code_generator/templates/python/api.jinja

+19-19
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ from typing import Annotated
44

55
from fastapi import APIRouter, Depends, Path, Query
66

7-
from backend.app.{{ app_name }}.schema.{{ table_name_en }} import Create{{ schema_name }}Param, Get{{ schema_name }}Detail, Update{{ schema_name }}Param
8-
from backend.app.{{ app_name }}.service.{{ table_name_en }}_service import {{ table_name_en }}_service
7+
from backend.app.{{ app_name }}.schema.{{ table_name }} import Create{{ schema_name }}Param, Get{{ schema_name }}Detail, Update{{ schema_name }}Param
8+
from backend.app.{{ app_name }}.service.{{ table_name }}_service import {{ table_name }}_service
99
from backend.common.pagination import DependsPagination, PageData, paging_data
1010
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
1111
from backend.common.security.jwt import DependsJwtAuth
@@ -16,64 +16,64 @@ from backend.database.db import CurrentSession
1616
router = APIRouter()
1717

1818

19-
@router.get('/{pk}', summary='获取{{ table_simple_name_zh }}详情', dependencies=[DependsJwtAuth])
20-
async def get_{{ table_name_en }}(pk: Annotated[int, Path(description='{{ table_simple_name_zh }} ID')]) -> ResponseSchemaModel[Get{{ schema_name }}Detail]:
21-
{{ table_name_en }} = await {{ table_name_en }}_service.get(pk=pk)
22-
return response_base.success(data={{ table_name_en }})
19+
@router.get('/{pk}', summary='获取{{ doc_comment }}详情', dependencies=[DependsJwtAuth])
20+
async def get_{{ table_name }}(pk: Annotated[int, Path(description='{{ doc_comment }} ID')]) -> ResponseSchemaModel[Get{{ schema_name }}Detail]:
21+
{{ table_name }} = await {{ table_name }}_service.get(pk=pk)
22+
return response_base.success(data={{ table_name }})
2323

2424

2525
@router.get(
2626
'',
27-
summary='分页获取所有{{ table_simple_name_zh }}',
27+
summary='分页获取所有{{ doc_comment }}',
2828
dependencies=[
2929
DependsJwtAuth,
3030
DependsPagination,
3131
],
3232
)
33-
async def get_pagination_{{ table_name_en }}s(db: CurrentSession) -> ResponseSchemaModel[PageData[Get{{ schema_name }}Detail]]:
34-
{{ table_name_en }}_select = await {{ table_name_en }}_service.get_select()
35-
page_data = await paging_data(db, {{ table_name_en }}_select)
33+
async def get_pagination_{{ table_name }}s(db: CurrentSession) -> ResponseSchemaModel[PageData[Get{{ schema_name }}Detail]]:
34+
{{ table_name }}_select = await {{ table_name }}_service.get_select()
35+
page_data = await paging_data(db, {{ table_name }}_select)
3636
return response_base.success(data=page_data)
3737

3838

3939
@router.post(
4040
'',
41-
summary='创建{{ table_simple_name_zh }}',
41+
summary='创建{{ doc_comment }}',
4242
dependencies=[
4343
Depends(RequestPermission('{{ permission }}:add')),
4444
DependsRBAC,
4545
],
4646
)
47-
async def create_{{ table_name_en }}(obj: Create{{ schema_name }}Param) -> ResponseModel:
48-
await {{ table_name_en }}_service.create(obj=obj)
47+
async def create_{{ table_name }}(obj: Create{{ schema_name }}Param) -> ResponseModel:
48+
await {{ table_name }}_service.create(obj=obj)
4949
return response_base.success()
5050

5151

5252
@router.put(
5353
'/{pk}',
54-
summary='更新{{ table_simple_name_zh }}',
54+
summary='更新{{ doc_comment }}',
5555
dependencies=[
5656
Depends(RequestPermission('{{ permission }}:edit')),
5757
DependsRBAC,
5858
],
5959
)
60-
async def update_{{ table_name_en }}(pk: Annotated[int, Path(description='{{ table_simple_name_zh }} ID')], obj: Update{{ schema_name }}Param) -> ResponseModel:
61-
count = await {{ table_name_en }}_service.update(pk=pk, obj=obj)
60+
async def update_{{ table_name }}(pk: Annotated[int, Path(description='{{ doc_comment }} ID')], obj: Update{{ schema_name }}Param) -> ResponseModel:
61+
count = await {{ table_name }}_service.update(pk=pk, obj=obj)
6262
if count > 0:
6363
return response_base.success()
6464
return response_base.fail()
6565

6666

6767
@router.delete(
6868
'',
69-
summary='批量删除{{ table_simple_name_zh }}',
69+
summary='批量删除{{ doc_comment }}',
7070
dependencies=[
7171
Depends(RequestPermission('{{ permission }}:del')),
7272
DependsRBAC,
7373
],
7474
)
75-
async def delete_{{ table_name_en }}(pk: Annotated[list[int], Query(description='{{ table_simple_name_zh }} ID 列表')]) -> ResponseModel:
76-
count = await {{ table_name_en }}_service.delete(pk=pk)
75+
async def delete_{{ table_name }}(pk: Annotated[list[int], Query(description='{{ doc_comment }} ID 列表')]) -> ResponseModel:
76+
count = await {{ table_name }}_service.delete(pk=pk)
7777
if count > 0:
7878
return response_base.success()
7979
return response_base.fail()

backend/plugin/code_generator/templates/python/crud.jinja

+17-17
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@ from sqlalchemy import Select
66
from sqlalchemy.ext.asyncio import AsyncSession
77
from sqlalchemy_crud_plus import CRUDPlus
88

9-
from backend.app.{{ app_name }}.model import {{ table_name_class }}
10-
from backend.app.{{ app_name }}.schema.{{ table_name_en }} import Create{{ schema_name }}Param, Update{{ schema_name }}Param
9+
from backend.app.{{ app_name }}.model import {{ class_name }}
10+
from backend.app.{{ app_name }}.schema.{{ table_name }} import Create{{ schema_name }}Param, Update{{ schema_name }}Param
1111

1212

13-
class CRUD{{ table_name_class }}(CRUDPlus[{{ schema_name }}]):
14-
async def get(self, db: AsyncSession, pk: int) -> {{ table_name_class }} | None:
13+
class CRUD{{ class_name }}(CRUDPlus[{{ schema_name }}]):
14+
async def get(self, db: AsyncSession, pk: int) -> {{ class_name }} | None:
1515
"""
16-
获取{{ table_name_zh }}
16+
获取{{ doc_comment }}
1717
1818
:param db: 数据库会话
19-
:param pk: {{ table_simple_name_zh }} ID
19+
:param pk: {{ doc_comment }} ID
2020
:return:
2121
"""
2222
return await self.select_model(db, pk)
2323

2424
async def get_list(self) -> Select:
25-
"""获取{{ table_name_zh }}列表"""
25+
"""获取{{ doc_comment }}列表"""
2626
return await self.select_order('created_time', 'desc')
2727

28-
async def get_all(self, db: AsyncSession) -> Sequence[{{ table_name_class }}]:
28+
async def get_all(self, db: AsyncSession) -> Sequence[{{ class_name }}]:
2929
"""
30-
获取所有{{ table_name_zh }}
30+
获取所有{{ doc_comment }}
3131
3232
:param db: 数据库会话
3333
:return:
@@ -36,34 +36,34 @@ class CRUD{{ table_name_class }}(CRUDPlus[{{ schema_name }}]):
3636

3737
async def create(self, db: AsyncSession, obj: Create{{ schema_name }}Param) -> None:
3838
"""
39-
创建{{ table_name_zh }}
39+
创建{{ doc_comment }}
4040
4141
:param db: 数据库会话
42-
:param obj: 创建{{ table_simple_name_zh }} 参数
42+
:param obj: 创建{{ doc_comment }}参数
4343
:return:
4444
"""
4545
await self.create_model(db, obj)
4646

4747
async def update(self, db: AsyncSession, pk: int, obj: Update{{ schema_name }}Param) -> int:
4848
"""
49-
更新{{ table_name_zh }}
49+
更新{{ doc_comment }}
5050
5151
:param db: 数据库会话
52-
:param pk: {{ table_simple_name_zh }} ID
53-
:param obj: 更新 {{ table_simple_name_zh }} 参数
52+
:param pk: {{ doc_comment }} ID
53+
:param obj: 更新 {{ doc_comment }}参数
5454
:return:
5555
"""
5656
return await self.update_model(db, pk, obj)
5757

5858
async def delete(self, db: AsyncSession, pk: list[int]) -> int:
5959
"""
60-
删除{{ table_name_zh }}
60+
删除{{ doc_comment }}
6161
6262
:param db: 数据库会话
63-
:param pk: {{ table_simple_name_zh }} ID
63+
:param pk: {{ doc_comment }} ID
6464
:return:
6565
"""
6666
return await self.delete_model_by_column(db, allow_multiple=True, id__in=pk)
6767

6868

69-
{{ table_name_en }}_dao: CRUD{{ table_name_class }} = CRUD{{ table_name_class }}({{ table_name_class }})
69+
{{ instance_name }}_dao: CRUD{{ class_name }} = CRUD{{ class_name }}({{ class_name }})

backend/plugin/code_generator/templates/python/model.jinja

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ from sqlalchemy.orm import Mapped, mapped_column
1515
from backend.common.model import {% if default_datetime_column %}Base{% else %}MappedBase{% endif %}, id_key
1616

1717

18-
class {{ table_name_class }}({% if default_datetime_column %}Base{% else %}MappedBase{% endif %}):
19-
"""{{ table_name_zh }}"""
18+
class {{ class_name }}({% if default_datetime_column %}Base{% else %}MappedBase{% endif %}):
19+
"""{{ table_comment }}"""
2020

21-
__tablename__ = '{{ table_name_en }}'
21+
__tablename__ = '{{ table_name }}'
2222

2323
id: Mapped[id_key] = mapped_column(init=False)
2424
{% for model in models %}

backend/plugin/code_generator/templates/python/schema.jinja

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@ from backend.common.schema import SchemaBase
88

99

1010
class {{ schema_name }}SchemaBase(SchemaBase):
11-
"""{{ table_simple_name_zh }}基础模型"""
11+
"""{{ doc_comment }}基础模型"""
1212
{% for model in models %}
1313
{{ model.name }}: {% if model.nullable %}{{ model.pd_type }} | None = Field(None, description='{{ model.comment }}'){% else %}{{ model.pd_type }} = Field(description='{{ model.comment }}'){% endif %}
1414

1515
{% endfor %}
1616

1717

1818
class Create{{ schema_name }}Param({{ schema_name }}SchemaBase):
19-
"""创建{{ table_simple_name_zh }}参数"""
19+
"""创建{{ doc_comment }}参数"""
2020

2121

2222
class Update{{ schema_name }}Param({{ schema_name }}SchemaBase):
23-
"""更新{{ table_simple_name_zh }}参数"""
23+
"""更新{{ doc_comment }}参数"""
2424

2525

2626
class Get{{ schema_name }}Detail({{ schema_name }}SchemaBase):
27-
"""{{ table_simple_name_zh }}详情"""
27+
"""{{ doc_comment }}详情"""
2828

2929
model_config = ConfigDict(from_attributes=True)
3030

0 commit comments

Comments
 (0)