PDManer区分索引类型

本文介绍了如何针对PDmaner数据库建模工具的一个不足进行优化,即添加对全文索引的支持。通过修改脚本模板,实现自定义全文索引的DDL语句生成,并详细解析了模板代码中的JavaScript语法和内置方法,帮助不具备源码修改能力的用户解决问题。
摘要由CSDN通过智能技术生成

背景

PDmaner是一个非常强大的数据库建模工具,但是还有一些细节功能还是做的不到位,比如对索引类型的不区分。比如我需要建立全文索引,工具中没地方选择,导出来的ddl语句全部是普通索引。

解决

有改源码能力的,应该加一个类型区分应该也很方便,但是对于没有修改源码能力的人来说也是有比较方便的解决方案的。发现是通过脚本模板的方式来生成DDL语句,所以就考虑通过修改脚本模板来解决。

步骤如下:

1.规范:比如全文索引的命名规范idx_search开头

2.修改模板脚本

{{~ it.entity.indexes:index}}
{{? index.defKey != "PRIMARY"}}
CREATE {{? index.unique}}UNIQUE {{?}}{{? index.defKey.startsWith("idx_search")}}FULLTEXT{{?}} INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}}) {{? index.defKey.startsWith("idx_search")}} with parser ngram{{?}};
{{?}}
{{~}}

 这里还解决了 每次从数据库反序列化的时候默认生成PRIMARY索引的问题

模板代码解释:

项目JavaScript语法对应语法案例
输出变量={{=变量名}{{=it.name}}
条件判断if{{? 条件表达式}}{{? i > 3}}
条件转折else/else if{{??}}/{{?? 条件表达式}}{{?? i ==2}}
循环for{{~ 循环变量}}{{~ it.arr:item}}...{{~}}
执行方法funcName(){{= funcName() }}{{= it.sayHello() }}

全局方法:可以通过it.func.方法名使用

方法名方法功能参数介绍案例
camel下划线转驼峰参数1:需要转化的字符串,参数2:首字母是否需要大写('USER_NAME', true) => 'userName'
underline驼峰转下划线参数1:需要转化的字符串,参数2:是否全大写('userName', true) => 'USER_NAME'
upperCase全大写参数1:需要转化的字符串('userName') => 'USERNAME'
lowerCase全小写参数1:需要转化的字符串('USERNAME') => 'username'
join多个字符串拼接不限参数,最后一个参数为拼接符('user','name','/') => 'user/name'
intersect两个数组交集参数1:数组1,参数2:数组2(['1', '2'], ['1', '2', '3']) => ['1', '2']
union两个数组并集参数1:数组1,参数2:数组2(['1', '2'], ['1', '2', '3']) => ['1', '2', '3']
minus两个数组差集参数1:数组1,参数2:数组2;(数组1比数组2多出的数据)(['1', '2', '3'], ['1', '2']) => ['3']
indexRebuildDDL获取重建索引DDL-(baseInfo, newIndexes, fullFields, type) => ''
dropDDL获取删除表/视图DDL-(data, type) => ''
createDDL获取创建表/视图DDL-(data, type) => ''

参考:
https://tech.meituan.com/2017/03/24/dot.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值