pdman 新建mysql数据表代码模板 添加对索引的支持

使用数据库模型建模工具pdman或 chiner导出ddl时,由于默认的代码模板建表语句和创建索引语句是分开的,导出的sql语句中两者也是独立的。
将创建索引的sql和建表sql合并结果如下:

DROP TABLE IF EXISTS {{=it.entity.defKey}};
CREATE TABLE {{=it.entity.defKey}}(
{{ pkList = [] ; }}
{{~it.entity.fields:field:index}}
{{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}
{{=field.defKey}} {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.autoIncrement ? 'AUTO_INCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }} COMMENT '{{=it.func.join(field.defName,field.comment,';')}}' {{= index < it.entity.fields.length-1 ? ',' : ( (pkList.length>0 || it.entity.indexes.length > 0) ? ',' :'' ) }}
{{~}}
{{? pkList.length >0 }}
PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : ''}}{{~}}){{=( it.entity.indexes.length > 0 ? ',' :'' )}}

{{~ it.entity.indexes:idx:index}}
{{? idx.unique}}UNIQUE {{?}}INDEX {{=idx.defKey}}({{ fieldsKeys = idx.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}}){{= index<it.entity.indexes.length-1 ? ',' : '' }}

) COMMENT = '{{=it.func.join(it.entity.defName,it.entity.comment,';') }}';
$blankline

posted @ 2022-02-08 18:13  雾绕空山  阅读(559)  评论(0)    收藏  举报