From 863dfed4ec2d3e4037f456b56a5e03eec26c0427 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Sun, 28 Jul 2024 12:38:05 +0800 Subject: [PATCH] Add custom code template pathname config (#372) --- backend/app/generator/conf.py | 3 +++ backend/utils/gen_template.py | 31 ++++++++++++++++--------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/backend/app/generator/conf.py b/backend/app/generator/conf.py index a3021352..a9ee86a6 100644 --- a/backend/app/generator/conf.py +++ b/backend/app/generator/conf.py @@ -12,6 +12,9 @@ class GeneratorSettings(BaseSettings): model_config = SettingsConfigDict(env_file=f'{BasePath}/.env', env_file_encoding='utf-8', extra='ignore') + # 模版目录 + TEMPLATE_BACKEND_DIR_NAME: str = 'py' + # 代码下载 ZIP_FILENAME: str = 'fba_generator' diff --git a/backend/utils/gen_template.py b/backend/utils/gen_template.py index 7a9c4971..6f4f3540 100644 --- a/backend/utils/gen_template.py +++ b/backend/utils/gen_template.py @@ -3,6 +3,7 @@ from jinja2 import Environment, FileSystemLoader, Template, select_autoescape from pydantic.alias_generators import to_pascal, to_snake +from backend.app.generator.conf import generator_settings from backend.app.generator.model import GenBusiness, GenModel from backend.core.path_conf import JINJA2_TEMPLATE_DIR @@ -37,15 +38,14 @@ def get_template_paths() -> list[str]: :return: """ return [ - 'py/api.jinja', - 'py/crud.jinja', - 'py/model.jinja', - 'py/schema.jinja', - 'py/service.jinja', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/api.jinja', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/crud.jinja', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/model.jinja', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/schema.jinja', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/service.jinja', ] - @staticmethod - def get_code_gen_path(tpl_path: str, business: GenBusiness) -> str: + def get_code_gen_path(self, tpl_path: str, business: GenBusiness) -> str: """ 获取代码生成路径 @@ -53,14 +53,15 @@ def get_code_gen_path(tpl_path: str, business: GenBusiness) -> str: """ app_name = business.app_name module_name = business.table_name_en - code_gen_path_mapping = { - 'py/api.jinja': f'py/{app_name}/api/{business.api_version}/{module_name}.py', - 'py/crud.jinja': f'py/{app_name}/crud/crud_{module_name}.py', - 'py/model.jinja': f'py/{app_name}/model/{module_name}.py', - 'py/schema.jinja': f'py/{app_name}/schema/{module_name}.py', - 'py/service.jinja': f'py/{app_name}/service/{module_name}_service.py', - } - return code_gen_path_mapping.get(tpl_path) + target_files = [ + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/{app_name}/api/{business.api_version}/{module_name}.py', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/{app_name}/crud/crud_{module_name}.py', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/{app_name}/model/{module_name}.py', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/{app_name}/schema/{module_name}.py', + f'{generator_settings.TEMPLATE_BACKEND_DIR_NAME}/{app_name}/service/{module_name}_service.py', + ] + code_gen_path_mapping = dict(zip(self.get_template_paths(), target_files)) + return code_gen_path_mapping[tpl_path] @staticmethod def get_vars(business: GenBusiness, models: list[GenModel]) -> dict: