mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-23 05:10:57 +00:00
重构代码生成模块,删除冗余文件并优化结构: 1. 删除旧的form、page、table等相关文件 2. 新增gencode模块基础结构 3. 移动jinja2工具类和模板引擎初始化器到utils目录 4. 优化数据库模型关系定义 5. 更新nginx配置支持WebSocket 6. 添加正则验证和加密工具类 7. 修复菜单和部门模型的循环引用问题 8. 优化初始化脚本和配置加载逻辑 调整初始化流程,使用统一会话管理: 1. 修改数据库初始化使用AsyncSessionLocal 2. 优化定时任务初始化逻辑 3. 统一配置和字典服务初始化方式 4. 修复模型关系定义导致的循环导入问题 其他改进: 1. 更新requirements.txt添加依赖 2. 调整IP白名单配置 3. 优化数据库连接日志输出 4. 修复模型继承关系问题
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import re
|
|
|
|
from module_gen.constants.gen_constants import GenConstants
|
|
|
|
|
|
def snake_to_pascal_case(value):
|
|
"""将下划线命名 (snake_case) 转换大驼峰"""
|
|
return ''.join(word.capitalize() for word in value.split('_'))
|
|
|
|
|
|
def snake_to_camel(snake_str):
|
|
"""将下划线命名 (snake_case) 转换小驼峰"""
|
|
components = snake_str.split('_')
|
|
return components[0] + ''.join(x.title() for x in components[1:])
|
|
|
|
def snake_2_colon(snake_str: str) -> str:
|
|
"""将下划线命名 (snake_case) 转换冒号分隔"""
|
|
return snake_str.replace('_', ':')
|
|
|
|
def is_base_column(column_name: str) -> bool:
|
|
"""判断是否是基础字段"""
|
|
return column_name in GenConstants.BASE_ENTITY
|
|
|
|
def get_sqlalchemy_type(mysql_field_type: str) -> str:
|
|
"""mysql_field_type 转sqlalchemy类型"""
|
|
if mysql_field_type:
|
|
base_type = mysql_field_type.split("(", 1)[0]
|
|
if base_type.upper() in GenConstants.MYSQL_TO_SQLALCHEMY.keys():
|
|
sqlalchemy_type = GenConstants.MYSQL_TO_SQLALCHEMY[base_type.upper()]
|
|
if sqlalchemy_type == 'String' :
|
|
match = re.search(r'\((.*?)\)', mysql_field_type)
|
|
if match:
|
|
return f'{sqlalchemy_type}({match.group(1)})'
|
|
else:
|
|
return f'{sqlalchemy_type}'
|
|
else:
|
|
return f'{sqlalchemy_type}'
|
|
return "String"
|
|
|
|
def get_column_options(col) -> str:
|
|
options = []
|
|
# 主键
|
|
if col['isPk'] == "1":
|
|
options.append("primary_key=True")
|
|
# 是否允许为空
|
|
if col['isRequired'] == "1":
|
|
options.append("nullable=False")
|
|
# 自增
|
|
if col["isIncrement"] == "1":
|
|
options.append("autoincrement=True")
|
|
# 注释
|
|
options.append(f"comment='{col['columnComment']}'")
|
|
return ", ".join(options)
|