v0.6.x-v0.7.x升级脚本.ms 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import 'org.ssssssss.magicapi.adapter.Resource' as root;
  2. import 'org.ssssssss.magicapi.provider.GroupServiceProvider';
  3. import 'org.ssssssss.magicapi.provider.ApiServiceProvider';
  4. import 'org.ssssssss.magicapi.provider.FunctionServiceProvider';
  5. import 'org.ssssssss.magicapi.utils.IoUtils' as IoUtils
  6. import 'org.ssssssss.magicapi.utils.JsonUtils' as JsonUtils
  7. import 'java.io.File' as File;
  8. var ds = db.camel(); //如果之前保存在其他库,这里可以修改为db.xxx.camel();
  9. var apiSql = """ select * from magic_api_info """;
  10. var groupSql = """ select * from magic_group where deleted = '0' """;
  11. var functionSql = """ select * from magic_function """;
  12. // 替换key,去除前缀,将首字母小写。
  13. var replaceKey = (it,src) => it.replaceKey(src,'').replaceKey(it => it.substring(0,1).toLowerCase() + it.substring(1));
  14. // list转tree
  15. var toTree = (list,parentId)=>list.filter(it => it.parentId == parentId).each(it => it.children = toTree(list,it.id))
  16. // 查询分组列表
  17. var groupList = ds.select(groupSql).map(it => replaceKey(it,"group"));
  18. // 将接口分组转为tree
  19. var apiTree = toTree(groupList.filter(it => it.type == '1'),'0');
  20. // 将函数分组转为tree
  21. var functionTree = toTree(groupList.filter(it => it.type == '2'),'0');
  22. // 记录分组所在路径
  23. var groups = {};
  24. // 处理分组
  25. var processGroup = (parent,list)=>{
  26. if(!parent.exists()){
  27. parent.mkdir();
  28. }
  29. list.each(it => {
  30. var resource = parent.getResource(it.name);
  31. resource.mkdir();
  32. groups[it.id] = resource;
  33. // 防止序列化children
  34. var children = it.remove('children');
  35. resource.getResource('group.json').write(JsonUtils.toJsonString(it))
  36. if(children){
  37. processGroup(resource,children);
  38. }
  39. });
  40. }
  41. // 处理接口分组
  42. processGroup(root.getResource("api"),apiTree);
  43. // 处理函数分组
  44. processGroup(root.getResource("function"),functionTree);
  45. // 处理接口
  46. ds.select(apiSql).map(it => replaceKey(it,'api')).each(it => groups[it.groupId].getResource(it.name + '.ms').write(ApiServiceProvider.serialize(it)));
  47. // 处理函数
  48. ds.select(functionSql).map(it => replaceKey(it,'function')).each(it => groups[it.groupId].getResource(it.name + '.ms').write(FunctionServiceProvider.serialize(it)));
  49. return 'ok';