midway-fatcms 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/.qoder/skills/midway-fatcms/01-quick-start.md +231 -0
  2. package/.qoder/skills/midway-fatcms/02-crud-quick.md +337 -0
  3. package/.qoder/skills/midway-fatcms/03-crud-sharding.md +488 -0
  4. package/.qoder/skills/midway-fatcms/04-condition-operators.md +93 -0
  5. package/.qoder/skills/midway-fatcms/05-configuration.md +290 -0
  6. package/.qoder/skills/midway-fatcms/06-builtin-functions.md +241 -0
  7. package/.qoder/skills/midway-fatcms/07-examples.md +500 -0
  8. package/.qoder/skills/midway-fatcms/SKILL.md +96 -0
  9. package/README.md +9 -9
  10. package/dist/controller/base/BaseApiController.d.ts +1 -2
  11. package/dist/controller/base/BaseApiController.js +0 -4
  12. package/dist/controller/gateway/DocGatewayController.js +1 -1
  13. package/dist/controller/manage/FlowConfigManageApi.js +4 -2
  14. package/dist/controller/manage/SysConfigMangeApi.js +6 -1
  15. package/dist/controller/manage/UserAccountManageApi.js +7 -2
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.js +2 -2
  18. package/dist/libs/crud-pro/CrudPro.d.ts +23 -2
  19. package/dist/libs/crud-pro/CrudPro.js +53 -2
  20. package/dist/libs/crud-pro/interfaces.d.ts +82 -12
  21. package/dist/libs/crud-pro/models/CrudResult.d.ts +115 -0
  22. package/dist/libs/crud-pro/models/CrudResult.js +126 -0
  23. package/dist/libs/crud-pro/models/RequestModel.d.ts +2 -38
  24. package/dist/libs/crud-pro/models/RequestModel.js +2 -99
  25. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +36 -2
  26. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +8 -4
  27. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +1 -2
  28. package/dist/libs/crud-pro/utils/OrderByUtils.d.ts +70 -0
  29. package/dist/libs/crud-pro/utils/OrderByUtils.js +158 -0
  30. package/dist/libs/crud-pro-quick/CrudProQuick.d.ts +295 -0
  31. package/dist/libs/crud-pro-quick/CrudProQuick.js +529 -0
  32. package/dist/libs/crud-pro-quick/fixSoftDelete.d.ts +30 -0
  33. package/dist/{service/curd → libs/crud-pro-quick}/fixSoftDelete.js +3 -6
  34. package/dist/libs/crud-pro-quick/index.d.ts +36 -0
  35. package/dist/libs/crud-pro-quick/index.js +49 -0
  36. package/dist/libs/crud-pro-quick/models.d.ts +33 -0
  37. package/dist/libs/crud-pro-quick/models.js +2 -0
  38. package/dist/libs/crud-sharding/ShardingConfig.d.ts +15 -2
  39. package/dist/libs/crud-sharding/ShardingConfig.js +2 -2
  40. package/dist/libs/crud-sharding/ShardingCrudPro.d.ts +119 -274
  41. package/dist/libs/crud-sharding/ShardingCrudPro.js +559 -379
  42. package/dist/libs/crud-sharding/ShardingMerger.d.ts +12 -20
  43. package/dist/libs/crud-sharding/ShardingMerger.js +36 -51
  44. package/dist/libs/crud-sharding/ShardingResult.d.ts +33 -0
  45. package/dist/libs/crud-sharding/ShardingResult.js +16 -0
  46. package/dist/libs/crud-sharding/ShardingRouter.d.ts +1 -0
  47. package/dist/libs/crud-sharding/ShardingRouter.js +25 -6
  48. package/dist/libs/crud-sharding/ShardingTableCreator.d.ts +21 -4
  49. package/dist/libs/crud-sharding/ShardingTableCreator.js +193 -59
  50. package/dist/libs/crud-sharding/ShardingUtils.d.ts +48 -0
  51. package/dist/libs/crud-sharding/ShardingUtils.js +122 -1
  52. package/dist/libs/crud-sharding/TIME_COLUMN_CLEAN_SPEC.md +488 -0
  53. package/dist/libs/crud-sharding/index.d.ts +4 -3
  54. package/dist/libs/crud-sharding/index.js +14 -2
  55. package/dist/models/bizmodels.d.ts +2 -6
  56. package/dist/service/SysAppService.d.ts +2 -2
  57. package/dist/service/SysAppService.js +16 -5
  58. package/dist/service/SysConfigService.d.ts +1 -1
  59. package/dist/service/SysConfigService.js +7 -2
  60. package/dist/service/SysDictDataService.js +14 -4
  61. package/dist/service/SysMenuService.js +7 -2
  62. package/dist/service/curd/CurdMixService.d.ts +6 -4
  63. package/dist/service/curd/CurdMixService.js +16 -2
  64. package/dist/service/curd/CurdProService.d.ts +43 -27
  65. package/dist/service/curd/CurdProService.js +32 -33
  66. package/dist/service/flow/FlowConfigService.js +7 -2
  67. package/dist/service/flow/FlowInstanceCrudService.js +22 -19
  68. package/package.json +2 -1
  69. package/src/controller/base/BaseApiController.ts +0 -5
  70. package/src/controller/gateway/DocGatewayController.ts +1 -1
  71. package/src/controller/manage/CrudStandardDesignApi.ts +4 -3
  72. package/src/controller/manage/FlowConfigManageApi.ts +4 -2
  73. package/src/controller/manage/SysConfigMangeApi.ts +6 -1
  74. package/src/controller/manage/UserAccountManageApi.ts +7 -2
  75. package/src/index.ts +2 -2
  76. package/src/libs/crud-pro/CrudPro.ts +62 -4
  77. package/src/libs/crud-pro/interfaces.ts +110 -15
  78. package/src/libs/crud-pro/models/CrudResult.ts +178 -0
  79. package/src/libs/crud-pro/models/RequestModel.ts +4 -110
  80. package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +41 -2
  81. package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +11 -7
  82. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +1 -2
  83. package/src/libs/crud-pro/utils/OrderByUtils.ts +169 -0
  84. package/src/libs/crud-pro-quick/CrudProQuick.ts +594 -0
  85. package/src/{service/curd → libs/crud-pro-quick}/fixSoftDelete.ts +23 -13
  86. package/src/libs/crud-pro-quick/index.ts +52 -0
  87. package/src/libs/crud-pro-quick/models.ts +35 -0
  88. package/src/libs/crud-sharding/ShardingConfig.ts +18 -2
  89. package/src/libs/crud-sharding/ShardingCrudPro.ts +689 -440
  90. package/src/libs/crud-sharding/ShardingMerger.ts +47 -73
  91. package/src/libs/crud-sharding/ShardingResult.ts +29 -0
  92. package/src/libs/crud-sharding/ShardingRouter.ts +27 -6
  93. package/src/libs/crud-sharding/ShardingTableCreator.ts +214 -71
  94. package/src/libs/crud-sharding/ShardingUtils.ts +137 -0
  95. package/src/libs/crud-sharding/TIME_COLUMN_CLEAN_SPEC.md +488 -0
  96. package/src/libs/crud-sharding/index.ts +14 -3
  97. package/src/models/bizmodels.ts +4 -7
  98. package/src/service/SysAppService.ts +18 -7
  99. package/src/service/SysConfigService.ts +8 -3
  100. package/src/service/SysDictDataService.ts +14 -4
  101. package/src/service/SysMenuService.ts +7 -2
  102. package/src/service/crudstd/CrudStdService.ts +2 -2
  103. package/src/service/curd/CurdMixService.ts +26 -5
  104. package/src/service/curd/CurdProService.ts +58 -39
  105. package/src/service/flow/FlowConfigService.ts +7 -2
  106. package/src/service/flow/FlowInstanceCrudService.ts +23 -20
  107. package/dist/libs/crud-pro/README.md +0 -809
  108. package/dist/libs/crud-pro/README_FUNC.md +0 -193
  109. package/dist/libs/crud-sharding/ROUTING_LOGIC.md +0 -944
  110. package/dist/models/StandardColumns.d.ts +0 -71
  111. package/dist/models/StandardColumns.js +0 -28
  112. package/dist/service/curd/CrudProQuick.d.ts +0 -190
  113. package/dist/service/curd/CrudProQuick.js +0 -319
  114. package/dist/service/curd/README.md +0 -1001
  115. package/dist/service/curd/fixSoftDelete.d.ts +0 -20
  116. package/src/libs/crud-pro/README.md +0 -809
  117. package/src/libs/crud-pro/README_FUNC.md +0 -193
  118. package/src/libs/crud-sharding/ROUTING_LOGIC.md +0 -944
  119. package/src/models/StandardColumns.ts +0 -76
  120. package/src/service/curd/CrudProQuick.ts +0 -360
  121. package/src/service/curd/README.md +0 -1001
@@ -20,11 +20,19 @@ const bizmodels_1 = require("../models/bizmodels");
20
20
  let SysDictDataService = class SysDictDataService extends BaseService_1.BaseService {
21
21
  get sys_data_dict_item() {
22
22
  const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
23
- return this.curdProService.getQuickCrud(SystemDbName, SystemDbType, SystemTables_1.SystemTables.sys_data_dict_item);
23
+ return this.curdProService.getQuickCrud({
24
+ sqlDatabase: SystemDbName,
25
+ sqlDbType: SystemDbType,
26
+ sqlTable: SystemTables_1.SystemTables.sys_data_dict_item,
27
+ });
24
28
  }
25
29
  // private get sys_data_dict(){
26
30
  // const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
27
- // return this.curdProService.getQuickCrud(SystemDbName, SystemDbType, SystemTables.sys_data_dict)
31
+ // return this.curdProService.getQuickCrud({
32
+ // sqlDatabase: SystemDbName,
33
+ // sqlDbType: SystemDbType,
34
+ // sqlTable: SystemTables.sys_data_dict,
35
+ // })
28
36
  // }
29
37
  async getDataDictItemsByDictCode(dict_code) {
30
38
  if (!dict_code || typeof dict_code !== 'string') {
@@ -34,14 +42,16 @@ let SysDictDataService = class SysDictDataService extends BaseService_1.BaseServ
34
42
  cacheKey: dict_code,
35
43
  cacheName: bizmodels_1.CacheNameEnum.GetDataDictItemsByDictCode,
36
44
  getter: async () => {
37
- return await this.sys_data_dict_item.getList({
45
+ const res = await this.sys_data_dict_item.findList({
38
46
  condition: { dict_code, status: 1, deleted_at: 0 }
39
47
  });
48
+ return res.rows;
40
49
  },
41
50
  });
42
51
  }
43
52
  async removeCacheByDictItemId(dict_item_id) {
44
- const dictItemObj = await this.sys_data_dict_item.getUniqueOne({ condition: { id: dict_item_id } });
53
+ const res = await this.sys_data_dict_item.findOne({ condition: { id: dict_item_id } });
54
+ const dictItemObj = res.row;
45
55
  return this.removeCacheByDictCode(dictItemObj['dict_code']);
46
56
  }
47
57
  // public async removeCacheByDictId(dict_id: string) {
@@ -20,7 +20,11 @@ const bizmodels_1 = require("../models/bizmodels");
20
20
  let SysMenuService = class SysMenuService extends BaseService_1.BaseService {
21
21
  get sys_menus_table() {
22
22
  const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
23
- return this.curdProService.getQuickCrud(SystemDbName, SystemDbType, SystemTables_1.SystemTables.sys_menus);
23
+ return this.curdProService.getQuickCrud({
24
+ sqlDatabase: SystemDbName,
25
+ sqlDbType: SystemDbType,
26
+ sqlTable: SystemTables_1.SystemTables.sys_menus,
27
+ });
24
28
  }
25
29
  /**
26
30
  * 获取所有菜单列表
@@ -31,9 +35,10 @@ let SysMenuService = class SysMenuService extends BaseService_1.BaseService {
31
35
  cacheKey: bizmodels_1.CacheNameEnum.GetSysMenusList,
32
36
  cacheName: bizmodels_1.CacheNameEnum.GetSysMenusList,
33
37
  getter: async () => {
34
- return await this.sys_menus_table.getList({
38
+ const res = await this.sys_menus_table.findList({
35
39
  condition: {}
36
40
  });
41
+ return res.rows;
37
42
  },
38
43
  });
39
44
  }
@@ -1,7 +1,8 @@
1
- import { ColumnRelation, IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery } from '../../libs/crud-pro/interfaces';
1
+ import { ColumnRelation, IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery, ExecuteSQLResult } from '../../libs/crud-pro/interfaces';
2
2
  import { IRequestCfgModel2 } from '../../models/bizmodels';
3
- import { SqlDbType } from '../../libs/crud-pro/models/keys';
4
3
  import { ExecuteContext } from '../../libs/crud-pro/models/ExecuteContext';
4
+ import { ShardingCrudPro } from "../../libs/crud-sharding";
5
+ import { IGetQuickCrudParam, IGetShardingCrudParam } from './CurdProService';
5
6
  export interface ILinkColumnRelationParam {
6
7
  columnsRelations: ColumnRelation[];
7
8
  }
@@ -14,8 +15,9 @@ export declare class CurdMixService {
14
15
  private curdMixByLinkToCustomService;
15
16
  private prepare;
16
17
  executeCrudByCfg(reqJson: IRequestModel, cfgModel: IRequestCfgModel2): Promise<ExecuteContext>;
17
- getBbUtil(sqlDatabase: string, sqlDbType: SqlDbType, sqlTable?: string): import("./CrudProQuick").CrudProQuick;
18
- executeSQL(sqlCfgModel: ISqlCfgModel): Promise<any>;
18
+ getQuickCrud(param: IGetQuickCrudParam): import("../..").CrudProQuick;
19
+ getShardingCrud(param: IGetShardingCrudParam): ShardingCrudPro;
20
+ executeSQL(sqlCfgModel: ISqlCfgModel): Promise<ExecuteSQLResult>;
19
21
  executeCrud(reqJson: IRequestModel): Promise<ExecuteContext>;
20
22
  getCachedCfgByMethod(method: string): Promise<IRequestCfgModel>;
21
23
  /**
@@ -30,9 +30,23 @@ let CurdMixService = class CurdMixService {
30
30
  this.prepare();
31
31
  return this.curdProService.executeCrudByCfg(reqJson, cfgModel);
32
32
  }
33
- getBbUtil(sqlDatabase, sqlDbType, sqlTable) {
33
+ // /**
34
+ // * @deprecated 请使用 getQuickCrud 替代
35
+ // * @param sqlDatabase
36
+ // * @param sqlDbType
37
+ // * @param sqlTable
38
+ // */
39
+ // getBbUtil(sqlDatabase: string, sqlDbType: SqlDbType, sqlTable?: string) {
40
+ // this.prepare();
41
+ // return this.curdProService.getQuickCrud({ sqlDatabase, sqlDbType, sqlTable });
42
+ // }
43
+ getQuickCrud(param) {
34
44
  this.prepare();
35
- return this.curdProService.getQuickCrud(sqlDatabase, sqlDbType, sqlTable);
45
+ return this.curdProService.getQuickCrud(param);
46
+ }
47
+ getShardingCrud(param) {
48
+ this.prepare();
49
+ return this.curdProService.getShardingCrud(param);
36
50
  }
37
51
  async executeSQL(sqlCfgModel) {
38
52
  this.prepare();
@@ -1,12 +1,34 @@
1
1
  import { Context } from '@midwayjs/koa';
2
- import { IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery } from '../../libs/crud-pro/interfaces';
2
+ import { IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery, ExecuteSQLResult } from '../../libs/crud-pro/interfaces';
3
3
  import { SqlDbType } from '../../libs/crud-pro/models/keys';
4
4
  import { ExecuteContext, IExecuteContextHandler } from '../../libs/crud-pro/models/ExecuteContext';
5
5
  import { RelatedType } from './CurdMixUtils';
6
6
  import { BaseService } from '../base/BaseService';
7
7
  import { IRequestCfgModel2 } from '../../models/bizmodels';
8
- import { CrudProQuick } from './CrudProQuick';
8
+ import { CrudProQuick } from '../../libs/crud-pro-quick';
9
9
  import { ShardingCrudPro, IShardingConfig } from '../../libs/crud-sharding';
10
+ /**
11
+ * getQuickCrud 参数接口
12
+ */
13
+ export interface IGetQuickCrudParam {
14
+ /** 数据库名 */
15
+ sqlDatabase: string;
16
+ /** 数据库类型 */
17
+ sqlDbType: SqlDbType;
18
+ /** 表名(可选) */
19
+ sqlTable?: string;
20
+ }
21
+ /**
22
+ * getShardingCrud 参数接口
23
+ */
24
+ export interface IGetShardingCrudParam {
25
+ /** 数据库名 */
26
+ sqlDatabase: string;
27
+ /** 数据库类型 */
28
+ sqlDbType: SqlDbType;
29
+ /** 分表配置 */
30
+ shardingConfig: IShardingConfig;
31
+ }
10
32
  export declare class CurdProService extends BaseService {
11
33
  protected ctx: Context;
12
34
  private mysql2Config;
@@ -26,49 +48,43 @@ export declare class CurdProService extends BaseService {
26
48
  * @param reqJson
27
49
  */
28
50
  executeCrud(reqJson: IRequestModel): Promise<ExecuteContext>;
29
- executeSQL(sqlCfgModel: ISqlCfgModel): Promise<any>;
51
+ executeSQL(sqlCfgModel: ISqlCfgModel): Promise<ExecuteSQLResult>;
30
52
  executeCrudByCfg(reqJson: IRequestModel, cfgModel: IRequestCfgModel2): Promise<ExecuteContext>;
31
- /**
32
- * 获取 CrudProQuick 工具类(已废弃)
33
- *
34
- * @deprecated 请使用 getQuickCrud 替代
35
- * @param sqlDatabase 数据库名
36
- * @param sqlDbType 数据库类型
37
- * @param sqlTable 表名(可选)
38
- * @returns CrudProQuick 实例
39
- */
40
- getBbUtil(sqlDatabase: string, sqlDbType: SqlDbType, sqlTable?: string): CrudProQuick;
41
53
  /**
42
54
  * 获取 CrudProQuick 工具类
43
55
  *
44
56
  * 提供快速 CRUD 操作的便捷方法,封装了常用的数据库操作。
45
57
  *
46
- * @param sqlDatabase 数据库名
47
- * @param sqlDbType 数据库类型
48
- * @param sqlTable 表名(可选)
58
+ * @param param 参数对象
49
59
  * @returns CrudProQuick 实例
50
60
  *
51
61
  * @example
52
- * const quick = curdProService.getQuickCrud('mydb', SqlDbType.mysql, 't_user');
53
- * const users = await quick.query({ status: 'active' });
62
+ * const quick = curdProService.getQuickCrud({
63
+ * sqlDatabase: 'mydb',
64
+ * sqlDbType: SqlDbType.mysql,
65
+ * sqlTable: 't_user',
66
+ * });
67
+ * const users = await quick.find({ status: 'active' });
54
68
  */
55
- getQuickCrud(sqlDatabase: string, sqlDbType: SqlDbType, sqlTable?: string): CrudProQuick;
69
+ getQuickCrud(param: IGetQuickCrudParam): CrudProQuick;
56
70
  /**
57
71
  * 获取分表 CRUD 操作器
58
72
  *
59
- * @param sqlDatabase 数据库名
60
- * @param sqlDbType 数据库类型
61
- * @param shardingConfig 分表配置
73
+ * @param param 参数对象
62
74
  * @returns ShardingCrudPro 实例
63
75
  *
64
76
  * @example
65
- * const sharding = curdProService.getShardingCrud('mydb', SqlDbType.mysql, {
66
- * type: ShardingType.MONTH,
67
- * baseTable: 't_order',
68
- * timeColumn: 'created_at',
77
+ * const sharding = curdProService.getShardingCrud({
78
+ * sqlDatabase: 'mydb',
79
+ * sqlDbType: SqlDbType.mysql,
80
+ * shardingConfig: {
81
+ * type: ShardingType.MONTH,
82
+ * baseTable: 't_order',
83
+ * timeColumn: 'created_at',
84
+ * },
69
85
  * });
70
86
  */
71
- getShardingCrud(sqlDatabase: string, sqlDbType: SqlDbType, shardingConfig: IShardingConfig): ShardingCrudPro;
87
+ getShardingCrud(param: IGetShardingCrudParam): ShardingCrudPro;
72
88
  getCachedCfgByMethod(method: string): Promise<IRequestCfgModel>;
73
89
  getAllTableInfos(query: ITableNamesQuery, options?: ITableNamesOptions): Promise<ITableListResult>;
74
90
  }
@@ -20,11 +20,11 @@ const keys_1 = require("../../libs/crud-pro/models/keys");
20
20
  const exceptions_1 = require("../../libs/crud-pro/exceptions");
21
21
  const ExecuteContextFunc_1 = require("../../libs/crud-pro/models/ExecuteContextFunc");
22
22
  const BaseService_1 = require("../base/BaseService");
23
- const CrudProQuick_1 = require("./CrudProQuick");
23
+ const crud_pro_quick_1 = require("../../libs/crud-pro-quick");
24
24
  const crud_sharding_1 = require("../../libs/crud-sharding");
25
25
  const fixCfgModel_1 = require("./fixCfgModel");
26
26
  const global_config_1 = require("../../libs/global-config/global-config");
27
- const fixSoftDelete_1 = require("../../service/curd/fixSoftDelete");
27
+ const fixSoftDelete_1 = require("../../libs/crud-pro-quick/fixSoftDelete");
28
28
  function toVisitor(ctx) {
29
29
  const workbenchInfo = ctx.workbenchInfo;
30
30
  const userSession = ctx.userSession;
@@ -177,57 +177,56 @@ let CurdProService = class CurdProService extends BaseService_1.BaseService {
177
177
  // 应用标准的updateCfg。
178
178
  (0, fixCfgModel_1.fixCfgModel)(cfgModel);
179
179
  // 应用软删除动作。
180
- (0, fixSoftDelete_1.fixSoftDelete)(cfgModel.sqlSimpleName, cfgModel, reqJson, this.ctx);
180
+ (0, fixSoftDelete_1.fixSoftDelete)(cfgModel.sqlSimpleName, cfgModel, reqJson, curdPro.getVisitor());
181
181
  return await curdPro.executeCrudByCfg(reqJson, cfgModel);
182
182
  }
183
- /**
184
- * 获取 CrudProQuick 工具类(已废弃)
185
- *
186
- * @deprecated 请使用 getQuickCrud 替代
187
- * @param sqlDatabase 数据库名
188
- * @param sqlDbType 数据库类型
189
- * @param sqlTable 表名(可选)
190
- * @returns CrudProQuick 实例
191
- */
192
- getBbUtil(sqlDatabase, sqlDbType, sqlTable) {
193
- return this.getQuickCrud(sqlDatabase, sqlDbType, sqlTable);
194
- }
195
183
  /**
196
184
  * 获取 CrudProQuick 工具类
197
185
  *
198
186
  * 提供快速 CRUD 操作的便捷方法,封装了常用的数据库操作。
199
187
  *
200
- * @param sqlDatabase 数据库名
201
- * @param sqlDbType 数据库类型
202
- * @param sqlTable 表名(可选)
188
+ * @param param 参数对象
203
189
  * @returns CrudProQuick 实例
204
190
  *
205
191
  * @example
206
- * const quick = curdProService.getQuickCrud('mydb', SqlDbType.mysql, 't_user');
207
- * const users = await quick.query({ status: 'active' });
192
+ * const quick = curdProService.getQuickCrud({
193
+ * sqlDatabase: 'mydb',
194
+ * sqlDbType: SqlDbType.mysql,
195
+ * sqlTable: 't_user',
196
+ * });
197
+ * const users = await quick.find({ status: 'active' });
208
198
  */
209
- getQuickCrud(sqlDatabase, sqlDbType, sqlTable) {
210
- const curdPro = this.getCrudPro();
211
- return new CrudProQuick_1.CrudProQuick({ curdPro, sqlDatabase, sqlDbType, sqlTable, ctx: this.ctx });
199
+ getQuickCrud(param) {
200
+ const { sqlDatabase, sqlDbType, sqlTable } = param;
201
+ // 传入工厂函数,每次需要时创建新的 CrudPro 实例
202
+ return new crud_pro_quick_1.CrudProQuick({
203
+ crudProFactory: () => this.getCrudPro(),
204
+ sqlDatabase,
205
+ sqlDbType,
206
+ sqlTable,
207
+ });
212
208
  }
213
209
  /**
214
210
  * 获取分表 CRUD 操作器
215
211
  *
216
- * @param sqlDatabase 数据库名
217
- * @param sqlDbType 数据库类型
218
- * @param shardingConfig 分表配置
212
+ * @param param 参数对象
219
213
  * @returns ShardingCrudPro 实例
220
214
  *
221
215
  * @example
222
- * const sharding = curdProService.getShardingCrud('mydb', SqlDbType.mysql, {
223
- * type: ShardingType.MONTH,
224
- * baseTable: 't_order',
225
- * timeColumn: 'created_at',
216
+ * const sharding = curdProService.getShardingCrud({
217
+ * sqlDatabase: 'mydb',
218
+ * sqlDbType: SqlDbType.mysql,
219
+ * shardingConfig: {
220
+ * type: ShardingType.MONTH,
221
+ * baseTable: 't_order',
222
+ * timeColumn: 'created_at',
223
+ * },
226
224
  * });
227
225
  */
228
- getShardingCrud(sqlDatabase, sqlDbType, shardingConfig) {
229
- const curdPro = this.getCrudPro();
230
- const sharding = new crud_sharding_1.ShardingCrudPro(curdPro, shardingConfig);
226
+ getShardingCrud(param) {
227
+ const { sqlDatabase, sqlDbType, shardingConfig } = param;
228
+ // 传入工厂函数,每次需要时创建新的 CrudPro 实例
229
+ const sharding = new crud_sharding_1.ShardingCrudPro(() => this.getCrudPro(), shardingConfig);
231
230
  sharding.setBaseCfg({ sqlDatabase, sqlDbType });
232
231
  return sharding;
233
232
  }
@@ -47,7 +47,11 @@ exports.ParsedFlowConfig = ParsedFlowConfig;
47
47
  let FlowConfigService = class FlowConfigService extends BaseService_1.BaseService {
48
48
  get flow_config() {
49
49
  const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
50
- return this.curdProService.getQuickCrud(SystemDbName, SystemDbType, FlowModel_1.FLOW_TABLES.flow_config);
50
+ return this.curdProService.getQuickCrud({
51
+ sqlDatabase: SystemDbName,
52
+ sqlDbType: SystemDbType,
53
+ sqlTable: FlowModel_1.FLOW_TABLES.flow_config,
54
+ });
51
55
  }
52
56
  toCacheKey(flow_code, flow_version) {
53
57
  if (!flow_code || typeof flow_code !== 'string') {
@@ -64,9 +68,10 @@ let FlowConfigService = class FlowConfigService extends BaseService_1.BaseServic
64
68
  cacheKey: cacheKey,
65
69
  cacheName: bizmodels_1.CacheNameEnum.GetFlowConfigOne,
66
70
  getter: async () => {
67
- return await this.flow_config.getUniqueOne({
71
+ const res = await this.flow_config.findUniqueOne({
68
72
  condition: { flow_code, flow_version, deleted_at: 0 }
69
73
  });
74
+ return res.row;
70
75
  },
71
76
  });
72
77
  }
@@ -23,7 +23,10 @@ exports.getCurrentDateTime = getCurrentDateTime;
23
23
  let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_1.BaseService {
24
24
  get flowDB() {
25
25
  const { FlowDbName, FlowDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
26
- const util = this.curdProService.getQuickCrud(FlowDbName, FlowDbType);
26
+ const util = this.curdProService.getQuickCrud({
27
+ sqlDatabase: FlowDbName,
28
+ sqlDbType: FlowDbType,
29
+ });
27
30
  util.setBaseCfgModel({ maxLimit: 100000 });
28
31
  return util;
29
32
  }
@@ -67,7 +70,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
67
70
  modified_at: getCurrentDateTime(),
68
71
  deleted_at: 0,
69
72
  };
70
- const nodeInstanceId = await this.flowDB.insertObject({
73
+ const nodeInstanceId = await this.flowDB.insert({
71
74
  data: nodeInstance,
72
75
  }, FlowModel_1.FLOW_TABLES.flow_instance_node);
73
76
  nodeInstance.id = nodeInstanceId.insertId;
@@ -89,7 +92,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
89
92
  modified_at: getCurrentDateTime(),
90
93
  deleted_at: 0,
91
94
  };
92
- const taskInstanceId = await this.flowDB.insertObject({
95
+ const taskInstanceId = await this.flowDB.insert({
93
96
  data: taskInstance,
94
97
  }, FlowModel_1.FLOW_TABLES.flow_instance_task);
95
98
  taskInstance.id = taskInstanceId.insertId;
@@ -99,7 +102,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
99
102
  if (updateNodeInstance.id) {
100
103
  updateNodeInstance.modified_by = this.getCurrentUserAccountId();
101
104
  updateNodeInstance.modified_at = getCurrentDateTime();
102
- await this.flowDB.updateObject({
105
+ await this.flowDB.update({
103
106
  condition: {
104
107
  id: updateNodeInstance.id,
105
108
  },
@@ -110,7 +113,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
110
113
  else {
111
114
  updateNodeInstance.created_by = this.getCurrentUserAccountId();
112
115
  updateNodeInstance.created_at = getCurrentDateTime();
113
- const res = await this.flowDB.insertObject({
116
+ const res = await this.flowDB.insert({
114
117
  data: updateNodeInstance,
115
118
  }, FlowModel_1.FLOW_TABLES.flow_instance_node);
116
119
  return res.insertId || '';
@@ -124,7 +127,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
124
127
  if (taskInstance.id) {
125
128
  taskInstance.modified_by = this.getCurrentUserAccountId();
126
129
  taskInstance.modified_at = getCurrentDateTime();
127
- await this.flowDB.updateObject({
130
+ await this.flowDB.update({
128
131
  condition: {
129
132
  id: taskInstance.id,
130
133
  },
@@ -135,7 +138,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
135
138
  else {
136
139
  taskInstance.created_by = this.getCurrentUserAccountId();
137
140
  taskInstance.created_at = getCurrentDateTime();
138
- const res = await this.flowDB.insertObject({
141
+ const res = await this.flowDB.insert({
139
142
  data: taskInstance,
140
143
  }, FlowModel_1.FLOW_TABLES.flow_instance_task);
141
144
  return res.insertId || '';
@@ -155,7 +158,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
155
158
  if (flowInstance.id) {
156
159
  flowInstance.modified_by = this.getCurrentUserAccountId();
157
160
  flowInstance.modified_at = getCurrentDateTime();
158
- await this.flowDB.updateObject({
161
+ await this.flowDB.update({
159
162
  condition: {
160
163
  id: flowInstance.id,
161
164
  },
@@ -166,7 +169,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
166
169
  else {
167
170
  flowInstance.created_by = this.getCurrentUserAccountId();
168
171
  flowInstance.created_at = getCurrentDateTime();
169
- const res = await this.flowDB.insertObject({
172
+ const res = await this.flowDB.insert({
170
173
  data: flowInstance,
171
174
  }, FlowModel_1.FLOW_TABLES.flow_instance);
172
175
  return res.insertId || '';
@@ -186,10 +189,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
186
189
  else {
187
190
  throw new Error('flow_instance_id is required');
188
191
  }
189
- const res = await this.flowDB.getUniqueOne({
192
+ const res = await this.flowDB.findUniqueOne({
190
193
  condition: condition,
191
194
  }, FlowModel_1.FLOW_TABLES.flow_instance_node);
192
- return res;
195
+ return res.row;
193
196
  }
194
197
  async getFlowInstance(flow_instance_id, ticket_no) {
195
198
  const condition = {};
@@ -202,10 +205,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
202
205
  if (Object.keys(condition).length === 0) {
203
206
  throw new Error('flow_instance_id or ticket_no is required');
204
207
  }
205
- const res = await this.flowDB.getUniqueOne({
208
+ const res = await this.flowDB.findUniqueOne({
206
209
  condition: condition,
207
210
  }, FlowModel_1.FLOW_TABLES.flow_instance);
208
- return res;
211
+ return res.row;
209
212
  }
210
213
  async getTaskInstance(task_instance_id) {
211
214
  const condition = {};
@@ -215,10 +218,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
215
218
  if (Object.keys(condition).length === 0) {
216
219
  throw new Error('task_instance_id is required');
217
220
  }
218
- const res = await this.flowDB.getUniqueOne({
221
+ const res = await this.flowDB.findUniqueOne({
219
222
  condition: condition,
220
223
  }, FlowModel_1.FLOW_TABLES.flow_instance_task);
221
- return res;
224
+ return res.row;
222
225
  }
223
226
  async getTaskInstanceListByFlowInstanceId(flow_instance_id) {
224
227
  const condition = {};
@@ -228,10 +231,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
228
231
  if (Object.keys(condition).length === 0) {
229
232
  throw new Error('flow_instance_id is required');
230
233
  }
231
- const res = await this.flowDB.getList({
234
+ const res = await this.flowDB.findList({
232
235
  condition: condition,
233
236
  }, FlowModel_1.FLOW_TABLES.flow_instance_task);
234
- return res;
237
+ return res.rows;
235
238
  }
236
239
  async getNodeInstanceListByFlowInstanceId(flowInstanceId) {
237
240
  const condition = {};
@@ -241,10 +244,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
241
244
  if (Object.keys(condition).length === 0) {
242
245
  throw new Error('flowInstanceId is required');
243
246
  }
244
- const res = await this.flowDB.getList({
247
+ const res = await this.flowDB.findList({
245
248
  condition: condition,
246
249
  }, FlowModel_1.FLOW_TABLES.flow_instance_node);
247
- return res;
250
+ return res.rows;
248
251
  }
249
252
  };
250
253
  __decorate([
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "midway-fatcms",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "This is a midway component sample",
5
5
  "main": "dist/index.js",
6
6
  "typings": "index.d.ts",
@@ -30,6 +30,7 @@
30
30
  "src/**/*.html",
31
31
  "src/**/*.ico",
32
32
  "src/**/*.md",
33
+ ".qoder/**/*.md",
33
34
  "index.d.ts",
34
35
  "tsconfig.json",
35
36
  ".prettierrc.js",
@@ -122,11 +122,6 @@ export class BaseApiController extends BaseService {
122
122
  }
123
123
 
124
124
 
125
- protected get sysDBUtil() {
126
- const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
127
- return this.curdMixService.getBbUtil(SystemDbName, SystemDbType);
128
- }
129
-
130
125
  private addAccountBasicInfoCfgModel(cfgModel: IRequestCfgModel) {
131
126
  let columnsRelation = cfgModel.columnsRelation;
132
127
  if (!columnsRelation) {
@@ -122,7 +122,7 @@ export class DocGatewayController extends BaseApiController {
122
122
  condition: {
123
123
  doc_lib_id: parseInt(docLibId),
124
124
  doc_category_code: {
125
- $notNull: '',
125
+ $notNull: true,
126
126
  },
127
127
  },
128
128
  },
@@ -4,6 +4,7 @@ import { parseCreateSqlToTitleMap, parseTableFieldTitleFromComment } from '@/lib
4
4
  import { checkPermission } from '@/middleware/permission.middleware';
5
5
  import { SystemFuncCode } from '@/models/SystemPerm';
6
6
  import { KeyOfCrudTypes, KeysOfSimpleSQL, SqlDbType } from '@/libs/crud-pro/models/keys';
7
+ import { ExecuteSQLRowsResult } from '@/libs/crud-pro/interfaces';
7
8
  import { SystemTables } from '@/models/SystemTables';
8
9
  import { CommonException } from '@/libs/crud-pro/exceptions';
9
10
  import { parseDatabaseName, toDatabaseNameStr } from '@/libs/crud-pro/utils/DatabaseName';
@@ -192,7 +193,7 @@ export class CrudStandardDesignApi extends BaseApiController {
192
193
  sqlDbType: dbType,
193
194
  crudType: KeyOfCrudTypes.SYS_QUERY,
194
195
  executeSqlArgs: [],
195
- });
196
+ }) as ExecuteSQLRowsResult;
196
197
 
197
198
  const fields = columnArray.map(columnObj => {
198
199
  const { column_name, is_nullable, column_default, data_type, is_identity, column_description, ...others } = columnObj;
@@ -242,7 +243,7 @@ export class CrudStandardDesignApi extends BaseApiController {
242
243
  sqlDbType: dbType,
243
244
  crudType: KeyOfCrudTypes.SYS_QUERY,
244
245
  executeSqlArgs: [schemaname, tableName],
245
- });
246
+ }) as ExecuteSQLRowsResult;
246
247
 
247
248
  const commentMap = await this.getTableFieldsCommentsMapOfPostgreSQL(dbName, schemaname, tableName);
248
249
 
@@ -309,7 +310,7 @@ export class CrudStandardDesignApi extends BaseApiController {
309
310
  sqlDbType: dbType,
310
311
  crudType: KeyOfCrudTypes.SYS_QUERY,
311
312
  executeSqlArgs: [schemaname, tableName],
312
- });
313
+ }) as ExecuteSQLRowsResult;
313
314
 
314
315
  const map: any = {};
315
316
  commentArray.forEach(commentObj => {
@@ -46,7 +46,8 @@ export class FlowConfigManageApi extends BaseApiController {
46
46
  @Post('/updateFlowConfig')
47
47
  async updateFlowConfig() {
48
48
  const body: IRequestModel = this.ctx.request.body as any;
49
- const { flow_code, flow_version } = body.condition;
49
+ const flow_code = String(body.condition.flow_code);
50
+ const flow_version = Number(body.condition.flow_version);
50
51
 
51
52
  await this.flowConfigService.remove_cache_flow_config_one(flow_code, flow_version);
52
53
 
@@ -63,7 +64,8 @@ export class FlowConfigManageApi extends BaseApiController {
63
64
  @Post('/deleteFlowConfig')
64
65
  async deleteFlowConfig() {
65
66
  const body: IRequestModel = this.ctx.request.body as any;
66
- const { flow_code, flow_version } = body.condition;
67
+ const flow_code = String(body.condition.flow_code);
68
+ const flow_version = Number(body.condition.flow_version);
67
69
  await this.flowConfigService.remove_cache_flow_config_one(flow_code, flow_version);
68
70
 
69
71
  return this.executeSysSimpleSQL(FLOW_TABLES.flow_config, KeysOfSimpleSQL.SIMPLE_DELETE, {
@@ -61,7 +61,12 @@ export class SysConfigMangeApi extends BaseApiController {
61
61
  return CommonResult.errorRes('id不能为空');
62
62
  }
63
63
 
64
- const sysConfig = await this.curdMixService.getBbUtil(SystemDbName, SystemDbType).getUniqueOne({ condition: body.condition }, SystemTables.sys_configs);
64
+ const sysConfigRes = await this.curdMixService.getQuickCrud({
65
+ sqlDatabase: SystemDbName,
66
+ sqlDbType: SystemDbType,
67
+ sqlTable: SystemTables.sys_configs,
68
+ }).findOne({ condition: body.condition });
69
+ const sysConfig = sysConfigRes.row;
65
70
  if (!sysConfig) {
66
71
  return CommonResult.errorRes('配置项不存在');
67
72
  }
@@ -55,9 +55,14 @@ export class UserAccountManageApi extends BaseApiController {
55
55
  return CommonResult.errorRes('id不能为空');
56
56
  }
57
57
 
58
- const userAccountInfo = await this.curdMixService.getBbUtil(SystemDbName, SystemDbType).getUniqueOne({
58
+ const userAccountInfoRes = await this.curdMixService.getQuickCrud({
59
+ sqlDatabase: SystemDbName,
60
+ sqlDbType: SystemDbType,
61
+ sqlTable: SystemTables.sys_user_account,
62
+ }).findUniqueOne({
59
63
  condition: body.condition
60
- }, SystemTables.sys_user_account);
64
+ });
65
+ const userAccountInfo = userAccountInfoRes.row;
61
66
 
62
67
  if (!userAccountInfo) {
63
68
  return CommonResult.errorRes('用户信息不存在');
package/src/index.ts CHANGED
@@ -70,7 +70,7 @@ export * from './service/curd/CurdMixByWorkbenchService';
70
70
  export * from './service/curd/CurdMixService';
71
71
  export * from './service/curd/CurdMixUtils';
72
72
  export * from './service/curd/CurdProService';
73
- export * from './service/curd/CrudProQuick';
73
+ export * from './libs/crud-pro-quick';
74
74
  export * from './service/flow/FlowConfigService';
75
75
  export * from './service/flow/FlowInstanceService';
76
76
  export * from './service/flow/FlowInstanceCrudService';
@@ -87,7 +87,6 @@ export * from './models/contextLogger';
87
87
  export * from './models/devops';
88
88
  export * from './models/SystemTables';
89
89
  export * from './models/AsyncTaskModel';
90
- export * from './models/StandardColumns';
91
90
 
92
91
  export * from './schedule/index';
93
92
 
@@ -114,5 +113,6 @@ export * from './libs/crud-pro/models/RequestCfgModel';
114
113
  export * from './libs/crud-pro/models/SqlSegArg';
115
114
  export * from './libs/crud-pro/models/ResModel';
116
115
  export * from './libs/crud-sharding/index';
116
+ export * from './libs/crud-pro-quick/index';
117
117
 
118
118
  export * from './libs/global-config/global-config';