diff --git a/backend/app/generator/README.md b/backend/app/generator/README.md index ae9677b3..91aaeaa3 100644 --- a/backend/app/generator/README.md +++ b/backend/app/generator/README.md @@ -29,7 +29,7 @@ 1. 通过创建业务接口手动添加一项业务数据 2. 通过模型创建接口手动添加模型列 -3. 访问 `preview`,`generate`,`download`接口,生成相应后端代码 +3. 访问 `preview`(预览),`generate`(磁盘写入),`download`(下载)接口,执行后端代码生成相应工作 ### S. 自动模式 @@ -37,4 +37,4 @@ 1. 访问 `tables` 接口,获取数据库表名列表 2. 通过 `import` 接口,导入数据库已有的数据库表数据,将自动创建业务表数据和模型表数据 -3. 访问 `preview`,`generate`,`download`接口,生成相应后端代码 +3. 访问 `preview`(预览),`generate`(磁盘写入),`download`(下载)接口,执行后端代码生成相应工作 diff --git a/backend/app/generator/service/gen_service.py b/backend/app/generator/service/gen_service.py index cd922012..e82f3aef 100644 --- a/backend/app/generator/service/gen_service.py +++ b/backend/app/generator/service/gen_service.py @@ -47,6 +47,9 @@ class GenService: table_info = await gen_dao.get_table(db, table_name) if not table_info: raise errors.NotFoundError(msg='数据库表不存在') + business_info = await gen_business_dao.get_by_name(db, table_name) + if business_info: + raise errors.ForbiddenError(msg='已存在相同数据库表业务') table_name = table_info[0] business_data = { 'app_name': app, @@ -122,15 +125,15 @@ class GenService: business = await gen_business_dao.get(db, pk) if not business: raise errors.NotFoundError(msg='业务不存在') - bio = io.BytesIO() - zf = zipfile.ZipFile(bio, 'w') - tpl_code_map = await self.render_tpl_code(business=business) - for tpl_path, code in tpl_code_map.items(): - new_code_path = gen_template.get_code_gen_path(tpl_path, business) - zf.writestr(new_code_path, code) - zf.close() - bio.seek(0) - return bio + bio = io.BytesIO() + zf = zipfile.ZipFile(bio, 'w') + tpl_code_map = await self.render_tpl_code(business=business) + for tpl_path, code in tpl_code_map.items(): + new_code_path = gen_template.get_code_gen_path(tpl_path, business) + zf.writestr(new_code_path, code) + zf.close() + bio.seek(0) + return bio gen_service = GenService() diff --git a/backend/templates/py/model.jinja b/backend/templates/py/model.jinja index 20acda47..e4445f5a 100644 --- a/backend/templates/py/model.jinja +++ b/backend/templates/py/model.jinja @@ -12,5 +12,5 @@ class {{ table_name_class }}({% if have_datetime_column %}Base{% else %}MappedBa id: Mapped[id_key] = mapped_column(init=False) {% for model in models %} - {{ model.name }}: {% if model.is_nullable %}Mapped[{{ model.type | None }}]{% else %}Mapped[{{ model.type }}]{% endif %} = mapped_column({% if model.type == 'str' %}{{ model_type_mapping.get(model.type) }}({{ model.length }}){% else %}{{ model_type_mapping.get(model.type) or model.type}}(){% endif %}, default={{ model.default }}, sort_order={{ model.sort }}, comment={{ model.comment }}) + {{ model.name }}: {% if model.is_nullable %}Mapped[{{ model.type }} | None]{% else %}Mapped[{{ model.type }}]{% endif %} = mapped_column({% if model.type == 'str' and model.length != 0 %}{{ model_type_mapping.get(model.type) }}({{ model.length }}){% else %}{{ model_type_mapping.get(model.type) or model.type}}(){% endif %}, default={{ model.default }}, sort_order={{ model.sort }}, comment={{ model.comment }}) {% endfor %}