from datetime import datetime from sqlalchemy import CHAR, BigInteger, Column, DateTime, Integer, String from sqlalchemy.orm import foreign, relationship from config.database import Base from config.env import DataBaseConfig from utils.common_util import SqlalchemyUtil class GenTable(Base): """ 代码生成业务表 """ __tablename__ = 'gen_table' __table_args__ = {'comment': '代码生成业务表'} table_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='编号') table_name = Column(String(200), nullable=True, server_default="''", comment='表名称') table_comment = Column(String(500), nullable=True, server_default="''", comment='表描述') sub_table_name = Column( String(64), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='关联子表的表名', ) sub_table_fk_name = Column( String(64), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='子表关联的外键名', ) class_name = Column(String(100), nullable=True, server_default="''", comment='实体类名称') tpl_category = Column( String(200), nullable=True, server_default='crud', comment='使用的模板(crud单表操作 tree树表操作)' ) tpl_web_type = Column( String(30), nullable=True, server_default="''", comment='前端模板类型(element-ui模版 element-plus模版)' ) package_name = Column(String(100), nullable=True, comment='生成包路径') module_name = Column(String(30), nullable=True, comment='生成模块名') business_name = Column(String(30), nullable=True, comment='生成业务名') function_name = Column(String(50), nullable=True, comment='生成功能名') function_author = Column(String(50), nullable=True, comment='生成功能作者') gen_type = Column(CHAR(1), nullable=True, server_default='0', comment='生成代码方式(0zip压缩包 1自定义路径)') gen_path = Column(String(200), nullable=True, server_default='/', comment='生成路径(不填默认项目路径)') options = Column(String(1000), nullable=True, comment='其它生成选项') create_by = Column(String(64), nullable=True, server_default="''", comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间') update_by = Column(String(64), nullable=True, server_default="''", comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) columns = relationship( 'GenTableColumn', primaryjoin=lambda: GenTable.table_id == foreign(GenTableColumn.table_id), order_by='GenTableColumn.sort', back_populates='tables', ) class GenTableColumn(Base): """ 代码生成业务表字段 """ __tablename__ = 'gen_table_column' __table_args__ = {'comment': '代码生成业务表字段'} column_id = Column(BigInteger, primary_key=True, autoincrement=True, nullable=False, comment='编号') table_id = Column(BigInteger, nullable=True, comment='归属表编号') column_name = Column(String(200), nullable=True, comment='列名称') column_comment = Column(String(500), nullable=True, comment='列描述') column_type = Column(String(100), nullable=True, comment='列类型') python_type = Column(String(500), nullable=True, comment='PYTHON类型') python_field = Column(String(200), nullable=True, comment='PYTHON字段名') is_pk = Column(CHAR(1), nullable=True, comment='是否主键(1是)') is_increment = Column(CHAR(1), nullable=True, comment='是否自增(1是)') is_required = Column(CHAR(1), nullable=True, comment='是否必填(1是)') is_unique = Column(CHAR(1), nullable=True, comment='是否唯一(1是)') is_insert = Column(CHAR(1), nullable=True, comment='是否为插入字段(1是)') is_edit = Column(CHAR(1), nullable=True, comment='是否编辑字段(1是)') is_list = Column(CHAR(1), nullable=True, comment='是否列表字段(1是)') is_query = Column(CHAR(1), nullable=True, comment='是否查询字段(1是)') query_type = Column( String(200), nullable=True, server_default='EQ', comment='查询方式(等于、不等于、大于、小于、范围)' ) html_type = Column( String(200), nullable=True, comment='显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)' ) dict_type = Column(String(200), nullable=True, server_default="''", comment='字典类型') sort = Column(Integer, nullable=True, comment='排序') create_by = Column(String(64), server_default="''", comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间') update_by = Column(String(64), server_default="''", comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间') tables = relationship( 'GenTable', primaryjoin=lambda: foreign(GenTableColumn.table_id) == GenTable.table_id, back_populates='columns' )