فهرست منبع

新增升级脚本

mxd 4 سال پیش
والد
کامیت
0dcece017a
1فایلهای تغییر یافته به همراه47 افزوده شده و 0 حذف شده
  1. 47 0
      db/v0.6.x-v0.7.x升级脚本.ms

+ 47 - 0
db/v0.6.x-v0.7.x升级脚本.ms

@@ -0,0 +1,47 @@
+import 'org.ssssssss.magicapi.provider.GroupServiceProvider' as GroupServiceProvider
+import 'org.ssssssss.magicapi.provider.ApiServiceProvider' as ApiServiceProvider
+import 'org.ssssssss.magicapi.provider.FunctionServiceProvider' as FunctionServiceProvider
+import 'org.ssssssss.magicapi.utils.IoUtils' as IoUtils
+import 'org.ssssssss.magicapi.utils.JsonUtils' as JsonUtils
+import 'java.io.File' as File;
+var ds = db.camel();    //如果之前保存在其他库,这里可以修改为db.xxx.camel();
+// 文件保存目录
+var workspace = new File('E:\\magic\\');
+var apiSql = """ select * from magic_api_info """;
+var groupSql = """ select * from magic_group where deleted = '0' """;
+var functionSql = """ select * from magic_function """;
+// 替换key,去除前缀,将首字母小写。
+var replaceKey = (it,src) => it.replaceKey(src,'').replaceKey(it => it.substring(0,1).toLowerCase() + it.substring(1));
+// list转tree
+var toTree = (list,parentId)=>list.filter(it => it.parentId == parentId).each(it => it.children = toTree(list,it.id))
+// 查询分组列表
+var groupList = ds.select(groupSql).map(it => replaceKey(it,"group"));
+// 将接口分组转为tree
+var apiTree = toTree(groupList.filter(it => it.type == '1'),'0');
+// 将函数分组转为tree
+var functionTree = toTree(groupList.filter(it => it.type == '2'),'0');
+// 记录分组所在路径
+var groupPath = {};
+// 处理分组
+var processGroup = (parentFile,list)=>{
+    list.each(it => {
+        var file = new File(parentFile,it.name);
+        file.mkdirs();
+        groupPath[it.id] = file.absolutePath;
+        // 防止序列化children
+        var children = it.remove('children');
+        IoUtils.write(new File(file,'group.json'),JsonUtils.toJsonString(it));
+        if(children){
+            processGroup(file,children);
+        }
+    });
+}
+// 处理接口分组
+processGroup(new File(workspace,'api'),apiTree);
+// 处理函数分组
+processGroup(new File(workspace,'function'),functionTree);
+// 处理接口
+ds.select(apiSql).map(it => replaceKey(it,'api')).each(it => IoUtils.write(new File(groupPath[it.groupId],it.name + '.ms'),ApiServiceProvider.serialize(it)));
+// 处理函数
+ds.select(functionSql).map(it => replaceKey(it,'function')).each(it => IoUtils.write(new File(groupPath[it.groupId],it.name + '.ms'),FunctionServiceProvider.serialize(it)));
+return 'ok';