@ruiapp/rapid-core 0.1.83 → 0.2.1

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 (143) hide show
  1. package/dist/bootstrapApplicationConfig.d.ts +6 -0
  2. package/dist/helpers/metaHelper.d.ts +3 -3
  3. package/dist/index.js +64 -25
  4. package/dist/plugins/webhooks/pluginConfig.d.ts +1 -0
  5. package/dist/types.d.ts +19 -1
  6. package/package.json +1 -1
  7. package/rollup.config.js +16 -16
  8. package/src/bootstrapApplicationConfig.ts +615 -602
  9. package/src/core/actionHandler.ts +22 -22
  10. package/src/core/eventManager.ts +20 -20
  11. package/src/core/facility.ts +7 -7
  12. package/src/core/http/formDataParser.ts +89 -89
  13. package/src/core/pluginManager.ts +175 -175
  14. package/src/core/providers/runtimeProvider.ts +5 -5
  15. package/src/core/request.ts +86 -86
  16. package/src/core/response.ts +76 -76
  17. package/src/core/routeContext.ts +43 -43
  18. package/src/core/routesBuilder.ts +88 -88
  19. package/src/core/server.ts +142 -142
  20. package/src/dataAccess/columnTypeMapper.ts +22 -22
  21. package/src/dataAccess/dataAccessTypes.ts +151 -151
  22. package/src/dataAccess/dataAccessor.ts +137 -137
  23. package/src/dataAccess/entityManager.ts +1507 -1505
  24. package/src/dataAccess/entityMapper.ts +100 -100
  25. package/src/dataAccess/propertyMapper.ts +28 -28
  26. package/src/deno-std/datetime/to_imf.ts +32 -32
  27. package/src/deno-std/encoding/base64.ts +141 -141
  28. package/src/deno-std/http/cookie.ts +372 -372
  29. package/src/facilities/log/LogFacility.ts +35 -35
  30. package/src/helpers/entityHelpers.ts +76 -76
  31. package/src/helpers/filterHelper.ts +47 -47
  32. package/src/helpers/metaHelper.ts +80 -76
  33. package/src/helpers/runCollectionEntityActionHandler.ts +27 -27
  34. package/src/index.ts +46 -46
  35. package/src/plugins/auth/AuthPlugin.ts +85 -85
  36. package/src/plugins/auth/actionHandlers/changePassword.ts +54 -54
  37. package/src/plugins/auth/actionHandlers/createSession.ts +63 -63
  38. package/src/plugins/auth/actionHandlers/deleteSession.ts +18 -18
  39. package/src/plugins/auth/actionHandlers/getMyProfile.ts +35 -35
  40. package/src/plugins/auth/actionHandlers/index.ts +8 -8
  41. package/src/plugins/auth/actionHandlers/resetPassword.ts +38 -38
  42. package/src/plugins/auth/models/AccessToken.ts +56 -56
  43. package/src/plugins/auth/models/index.ts +3 -3
  44. package/src/plugins/auth/routes/changePassword.ts +15 -15
  45. package/src/plugins/auth/routes/getMyProfile.ts +15 -15
  46. package/src/plugins/auth/routes/index.ts +7 -7
  47. package/src/plugins/auth/routes/resetPassword.ts +15 -15
  48. package/src/plugins/auth/routes/signin.ts +15 -15
  49. package/src/plugins/auth/routes/signout.ts +15 -15
  50. package/src/plugins/cronJob/CronJobPlugin.ts +112 -112
  51. package/src/plugins/cronJob/CronJobPluginTypes.ts +49 -49
  52. package/src/plugins/cronJob/actionHandlers/index.ts +4 -4
  53. package/src/plugins/cronJob/actionHandlers/runCronJob.ts +29 -29
  54. package/src/plugins/cronJob/routes/index.ts +3 -3
  55. package/src/plugins/cronJob/routes/runCronJob.ts +15 -15
  56. package/src/plugins/dataManage/DataManagePlugin.ts +163 -163
  57. package/src/plugins/dataManage/actionHandlers/addEntityRelations.ts +20 -20
  58. package/src/plugins/dataManage/actionHandlers/countCollectionEntities.ts +15 -15
  59. package/src/plugins/dataManage/actionHandlers/createCollectionEntitiesBatch.ts +42 -42
  60. package/src/plugins/dataManage/actionHandlers/createCollectionEntity.ts +24 -24
  61. package/src/plugins/dataManage/actionHandlers/deleteCollectionEntities.ts +38 -38
  62. package/src/plugins/dataManage/actionHandlers/deleteCollectionEntityById.ts +22 -22
  63. package/src/plugins/dataManage/actionHandlers/findCollectionEntities.ts +26 -26
  64. package/src/plugins/dataManage/actionHandlers/findCollectionEntityById.ts +21 -21
  65. package/src/plugins/dataManage/actionHandlers/queryDatabase.ts +22 -22
  66. package/src/plugins/dataManage/actionHandlers/removeEntityRelations.ts +20 -20
  67. package/src/plugins/dataManage/actionHandlers/updateCollectionEntityById.ts +35 -35
  68. package/src/plugins/entityAccessControl/EntityAccessControlPlugin.ts +146 -146
  69. package/src/plugins/fileManage/FileManagePlugin.ts +52 -52
  70. package/src/plugins/fileManage/actionHandlers/downloadDocument.ts +36 -36
  71. package/src/plugins/fileManage/actionHandlers/downloadFile.ts +44 -44
  72. package/src/plugins/fileManage/actionHandlers/uploadFile.ts +33 -33
  73. package/src/plugins/fileManage/routes/downloadDocument.ts +15 -15
  74. package/src/plugins/fileManage/routes/downloadFile.ts +15 -15
  75. package/src/plugins/fileManage/routes/index.ts +5 -5
  76. package/src/plugins/fileManage/routes/uploadFile.ts +15 -15
  77. package/src/plugins/metaManage/MetaManagePlugin.ts +500 -488
  78. package/src/plugins/metaManage/actionHandlers/getMetaModelDetail.ts +10 -10
  79. package/src/plugins/metaManage/actionHandlers/listMetaModels.ts +9 -9
  80. package/src/plugins/metaManage/actionHandlers/listMetaRoutes.ts +9 -9
  81. package/src/plugins/routeManage/RouteManagePlugin.ts +62 -62
  82. package/src/plugins/routeManage/actionHandlers/httpProxy.ts +13 -13
  83. package/src/plugins/sequence/SequencePlugin.ts +136 -136
  84. package/src/plugins/sequence/SequencePluginTypes.ts +69 -69
  85. package/src/plugins/sequence/SequenceService.ts +81 -81
  86. package/src/plugins/sequence/actionHandlers/generateSn.ts +32 -32
  87. package/src/plugins/sequence/actionHandlers/index.ts +4 -4
  88. package/src/plugins/sequence/models/SequenceAutoIncrementRecord.ts +49 -49
  89. package/src/plugins/sequence/models/SequenceRule.ts +42 -42
  90. package/src/plugins/sequence/models/index.ts +4 -4
  91. package/src/plugins/sequence/routes/generateSn.ts +15 -15
  92. package/src/plugins/sequence/routes/index.ts +3 -3
  93. package/src/plugins/sequence/segment-utility.ts +11 -11
  94. package/src/plugins/sequence/segments/autoIncrement.ts +78 -78
  95. package/src/plugins/sequence/segments/dayOfMonth.ts +17 -17
  96. package/src/plugins/sequence/segments/index.ts +9 -9
  97. package/src/plugins/sequence/segments/literal.ts +14 -14
  98. package/src/plugins/sequence/segments/month.ts +17 -17
  99. package/src/plugins/sequence/segments/parameter.ts +18 -18
  100. package/src/plugins/sequence/segments/year.ts +17 -17
  101. package/src/plugins/serverOperation/ServerOperationPlugin.ts +91 -91
  102. package/src/plugins/serverOperation/ServerOperationPluginTypes.ts +15 -15
  103. package/src/plugins/serverOperation/actionHandlers/index.ts +4 -4
  104. package/src/plugins/setting/SettingPlugin.ts +68 -68
  105. package/src/plugins/setting/SettingPluginTypes.ts +37 -37
  106. package/src/plugins/setting/SettingService.ts +213 -213
  107. package/src/plugins/setting/actionHandlers/getSystemSettingValues.ts +30 -30
  108. package/src/plugins/setting/actionHandlers/getUserSettingValues.ts +38 -38
  109. package/src/plugins/setting/actionHandlers/index.ts +6 -6
  110. package/src/plugins/setting/actionHandlers/setSystemSettingValues.ts +30 -30
  111. package/src/plugins/setting/models/SystemSettingGroupSetting.ts +57 -57
  112. package/src/plugins/setting/models/SystemSettingItem.ts +42 -42
  113. package/src/plugins/setting/models/SystemSettingItemSetting.ts +73 -73
  114. package/src/plugins/setting/models/UserSettingGroupSetting.ts +57 -57
  115. package/src/plugins/setting/models/UserSettingItem.ts +49 -49
  116. package/src/plugins/setting/models/UserSettingItemSetting.ts +73 -73
  117. package/src/plugins/setting/models/index.ts +8 -8
  118. package/src/plugins/setting/routes/getSystemSettingValues.ts +15 -15
  119. package/src/plugins/setting/routes/getUserSettingValues.ts +15 -15
  120. package/src/plugins/setting/routes/index.ts +5 -5
  121. package/src/plugins/setting/routes/setSystemSettingValues.ts +15 -15
  122. package/src/plugins/stateMachine/StateMachinePlugin.ts +186 -186
  123. package/src/plugins/stateMachine/StateMachinePluginTypes.ts +48 -48
  124. package/src/plugins/stateMachine/actionHandlers/index.ts +4 -4
  125. package/src/plugins/stateMachine/actionHandlers/sendStateMachineEvent.ts +51 -51
  126. package/src/plugins/stateMachine/models/StateMachine.ts +42 -42
  127. package/src/plugins/stateMachine/models/index.ts +3 -3
  128. package/src/plugins/stateMachine/routes/index.ts +3 -3
  129. package/src/plugins/stateMachine/routes/sendStateMachineEvent.ts +15 -15
  130. package/src/plugins/webhooks/WebhooksPlugin.ts +148 -148
  131. package/src/plugins/webhooks/pluginConfig.ts +1 -0
  132. package/src/polyfill.ts +5 -5
  133. package/src/proxy/mod.ts +38 -38
  134. package/src/queryBuilder/queryBuilder.ts +637 -637
  135. package/src/server.ts +463 -451
  136. package/src/types.ts +659 -637
  137. package/src/utilities/accessControlUtility.ts +33 -33
  138. package/src/utilities/errorUtility.ts +15 -15
  139. package/src/utilities/fsUtility.ts +61 -61
  140. package/src/utilities/httpUtility.ts +19 -19
  141. package/src/utilities/jwtUtility.ts +26 -26
  142. package/src/utilities/timeUtility.ts +9 -9
  143. package/tsconfig.json +19 -19
@@ -1,29 +1,29 @@
1
- import { ActionHandlerContext } from "~/core/actionHandler";
2
- import { RunCronJobActionHandlerOptions, RunCronJobInput } from "../CronJobPluginTypes";
3
- import type CronJobPlugin from "../CronJobPlugin";
4
-
5
- export const code = "runCronJob";
6
-
7
- export async function handler(plugin: CronJobPlugin, ctx: ActionHandlerContext, options: RunCronJobActionHandlerOptions) {
8
- const { server, routerContext } = ctx;
9
- const { response } = routerContext;
10
-
11
- const input: RunCronJobInput = ctx.input;
12
-
13
- if (options.code) {
14
- input.code = options.code;
15
- }
16
-
17
- if (!input.code) {
18
- throw new Error(`Cron job code is required.`);
19
- }
20
-
21
- const job = plugin.getJobConfigurationByCode(input.code);
22
- if (!job) {
23
- throw new Error(`Cron job with code '${input.code}' was not found.`);
24
- }
25
-
26
- await plugin.executeJob(server, job);
27
-
28
- response.json({});
29
- }
1
+ import { ActionHandlerContext } from "~/core/actionHandler";
2
+ import { RunCronJobActionHandlerOptions, RunCronJobInput } from "../CronJobPluginTypes";
3
+ import type CronJobPlugin from "../CronJobPlugin";
4
+
5
+ export const code = "runCronJob";
6
+
7
+ export async function handler(plugin: CronJobPlugin, ctx: ActionHandlerContext, options: RunCronJobActionHandlerOptions) {
8
+ const { server, routerContext } = ctx;
9
+ const { response } = routerContext;
10
+
11
+ const input: RunCronJobInput = ctx.input;
12
+
13
+ if (options.code) {
14
+ input.code = options.code;
15
+ }
16
+
17
+ if (!input.code) {
18
+ throw new Error(`Cron job code is required.`);
19
+ }
20
+
21
+ const job = plugin.getJobConfigurationByCode(input.code);
22
+ if (!job) {
23
+ throw new Error(`Cron job with code '${input.code}' was not found.`);
24
+ }
25
+
26
+ await plugin.executeJob(server, job);
27
+
28
+ response.json({});
29
+ }
@@ -1,3 +1,3 @@
1
- import runCronJob from "./runCronJob";
2
-
3
- export default [runCronJob];
1
+ import runCronJob from "./runCronJob";
2
+
3
+ export default [runCronJob];
@@ -1,15 +1,15 @@
1
- import { RpdRoute } from "~/types";
2
-
3
- export default {
4
- namespace: "svc",
5
- name: "svc.runCronJob",
6
- code: "svc.runCronJob",
7
- type: "RESTful",
8
- method: "POST",
9
- endpoint: "/svc/runCronJob",
10
- actions: [
11
- {
12
- code: "runCronJob",
13
- },
14
- ],
15
- } satisfies RpdRoute;
1
+ import { RpdRoute } from "~/types";
2
+
3
+ export default {
4
+ namespace: "svc",
5
+ name: "svc.runCronJob",
6
+ code: "svc.runCronJob",
7
+ type: "RESTful",
8
+ method: "POST",
9
+ endpoint: "/svc/runCronJob",
10
+ actions: [
11
+ {
12
+ code: "runCronJob",
13
+ },
14
+ ],
15
+ } satisfies RpdRoute;
@@ -1,163 +1,163 @@
1
- /**
2
- * Support manage data in database.
3
- * This plugin provide:
4
- * - routes for manage data in database.
5
- */
6
-
7
- import { RpdApplicationConfig, RpdHttpMethod, RpdRoute, RunEntityActionHandlerOptions } from "~/types";
8
-
9
- import * as findCollectionEntities from "./actionHandlers/findCollectionEntities";
10
- import * as findCollectionEntityById from "./actionHandlers/findCollectionEntityById";
11
- import * as countCollectionEntities from "./actionHandlers/countCollectionEntities";
12
- import * as createCollectionEntity from "./actionHandlers/createCollectionEntity";
13
- import * as createCollectionEntitiesBatch from "./actionHandlers/createCollectionEntitiesBatch";
14
- import * as updateCollectionEntityById from "./actionHandlers/updateCollectionEntityById";
15
- import * as deleteCollectionEntities from "./actionHandlers/deleteCollectionEntities";
16
- import * as deleteCollectionEntityById from "./actionHandlers/deleteCollectionEntityById";
17
- import * as addEntityRelations from "./actionHandlers/addEntityRelations";
18
- import * as removeEntityRelations from "./actionHandlers/removeEntityRelations";
19
- import * as queryDatabase from "./actionHandlers/queryDatabase";
20
- import {
21
- RpdServerPluginExtendingAbilities,
22
- RpdServerPluginConfigurableTargetOptions,
23
- RpdConfigurationItemOptions,
24
- IRpdServer,
25
- RapidPlugin,
26
- } from "~/core/server";
27
-
28
- const routeConfigs: {
29
- code: string;
30
- method: RpdHttpMethod;
31
- endpoint: string;
32
- handlerCode: string;
33
- }[] = [
34
- {
35
- code: "createBatch",
36
- method: "POST",
37
- endpoint: "/operations/create_batch",
38
- handlerCode: "createCollectionEntitiesBatch",
39
- },
40
- {
41
- code: "find",
42
- method: "POST",
43
- endpoint: "/operations/find",
44
- handlerCode: "findCollectionEntities",
45
- },
46
- {
47
- code: "count",
48
- method: "POST",
49
- endpoint: "/operations/count",
50
- handlerCode: "countCollectionEntities",
51
- },
52
- {
53
- code: "delete",
54
- method: "POST",
55
- endpoint: "/operations/delete",
56
- handlerCode: "deleteCollectionEntities",
57
- },
58
- {
59
- code: "addRelations",
60
- method: "POST",
61
- endpoint: "/operations/add_relations",
62
- handlerCode: "addEntityRelations",
63
- },
64
- {
65
- code: "removeRelations",
66
- method: "POST",
67
- endpoint: "/operations/remove_relations",
68
- handlerCode: "removeEntityRelations",
69
- },
70
- {
71
- code: "getById",
72
- method: "GET",
73
- endpoint: "/:id",
74
- handlerCode: "findCollectionEntityById",
75
- },
76
- {
77
- code: "create",
78
- method: "POST",
79
- endpoint: "",
80
- handlerCode: "createCollectionEntity",
81
- },
82
- {
83
- code: "updateById",
84
- method: "PATCH",
85
- endpoint: "/:id",
86
- handlerCode: "updateCollectionEntityById",
87
- },
88
- {
89
- code: "deleteById",
90
- method: "DELETE",
91
- endpoint: "/:id",
92
- handlerCode: "deleteCollectionEntityById",
93
- },
94
- ];
95
-
96
- class DataManager implements RapidPlugin {
97
- get code(): string {
98
- return "dataManager";
99
- }
100
-
101
- get description(): string {
102
- return "对数据进行管理,提供增删改查等接口。";
103
- }
104
-
105
- get extendingAbilities(): RpdServerPluginExtendingAbilities[] {
106
- return [];
107
- }
108
-
109
- get configurableTargets(): RpdServerPluginConfigurableTargetOptions[] {
110
- return [];
111
- }
112
-
113
- get configurations(): RpdConfigurationItemOptions[] {
114
- return [];
115
- }
116
-
117
- async registerActionHandlers(server: IRpdServer): Promise<any> {
118
- server.registerActionHandler(this, findCollectionEntities);
119
- server.registerActionHandler(this, findCollectionEntityById);
120
- server.registerActionHandler(this, countCollectionEntities);
121
- server.registerActionHandler(this, createCollectionEntity);
122
- server.registerActionHandler(this, createCollectionEntitiesBatch);
123
- server.registerActionHandler(this, updateCollectionEntityById);
124
- server.registerActionHandler(this, addEntityRelations);
125
- server.registerActionHandler(this, removeEntityRelations);
126
- server.registerActionHandler(this, deleteCollectionEntities);
127
- server.registerActionHandler(this, deleteCollectionEntityById);
128
- server.registerActionHandler(this, queryDatabase);
129
- }
130
-
131
- async configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any> {
132
- const { models } = applicationConfig;
133
- const routes: RpdRoute[] = [];
134
-
135
- models.forEach((model) => {
136
- const { namespace, singularCode, pluralCode } = model;
137
-
138
- routeConfigs.forEach((routeConfig) => {
139
- routes.push({
140
- namespace,
141
- name: `${namespace}.${singularCode}.${routeConfig.code}`,
142
- code: `${namespace}.${singularCode}.${routeConfig.code}`,
143
- type: "RESTful",
144
- method: routeConfig.method,
145
- endpoint: `/${namespace}/${pluralCode}${routeConfig.endpoint}`,
146
- actions: [
147
- {
148
- code: routeConfig.handlerCode,
149
- config: {
150
- namespace,
151
- singularCode,
152
- } as RunEntityActionHandlerOptions,
153
- },
154
- ],
155
- });
156
- });
157
- });
158
-
159
- server.appendApplicationConfig({ routes });
160
- }
161
- }
162
-
163
- export default DataManager;
1
+ /**
2
+ * Support manage data in database.
3
+ * This plugin provide:
4
+ * - routes for manage data in database.
5
+ */
6
+
7
+ import { RpdApplicationConfig, RpdHttpMethod, RpdRoute, RunEntityActionHandlerOptions } from "~/types";
8
+
9
+ import * as findCollectionEntities from "./actionHandlers/findCollectionEntities";
10
+ import * as findCollectionEntityById from "./actionHandlers/findCollectionEntityById";
11
+ import * as countCollectionEntities from "./actionHandlers/countCollectionEntities";
12
+ import * as createCollectionEntity from "./actionHandlers/createCollectionEntity";
13
+ import * as createCollectionEntitiesBatch from "./actionHandlers/createCollectionEntitiesBatch";
14
+ import * as updateCollectionEntityById from "./actionHandlers/updateCollectionEntityById";
15
+ import * as deleteCollectionEntities from "./actionHandlers/deleteCollectionEntities";
16
+ import * as deleteCollectionEntityById from "./actionHandlers/deleteCollectionEntityById";
17
+ import * as addEntityRelations from "./actionHandlers/addEntityRelations";
18
+ import * as removeEntityRelations from "./actionHandlers/removeEntityRelations";
19
+ import * as queryDatabase from "./actionHandlers/queryDatabase";
20
+ import {
21
+ RpdServerPluginExtendingAbilities,
22
+ RpdServerPluginConfigurableTargetOptions,
23
+ RpdConfigurationItemOptions,
24
+ IRpdServer,
25
+ RapidPlugin,
26
+ } from "~/core/server";
27
+
28
+ const routeConfigs: {
29
+ code: string;
30
+ method: RpdHttpMethod;
31
+ endpoint: string;
32
+ handlerCode: string;
33
+ }[] = [
34
+ {
35
+ code: "createBatch",
36
+ method: "POST",
37
+ endpoint: "/operations/create_batch",
38
+ handlerCode: "createCollectionEntitiesBatch",
39
+ },
40
+ {
41
+ code: "find",
42
+ method: "POST",
43
+ endpoint: "/operations/find",
44
+ handlerCode: "findCollectionEntities",
45
+ },
46
+ {
47
+ code: "count",
48
+ method: "POST",
49
+ endpoint: "/operations/count",
50
+ handlerCode: "countCollectionEntities",
51
+ },
52
+ {
53
+ code: "delete",
54
+ method: "POST",
55
+ endpoint: "/operations/delete",
56
+ handlerCode: "deleteCollectionEntities",
57
+ },
58
+ {
59
+ code: "addRelations",
60
+ method: "POST",
61
+ endpoint: "/operations/add_relations",
62
+ handlerCode: "addEntityRelations",
63
+ },
64
+ {
65
+ code: "removeRelations",
66
+ method: "POST",
67
+ endpoint: "/operations/remove_relations",
68
+ handlerCode: "removeEntityRelations",
69
+ },
70
+ {
71
+ code: "getById",
72
+ method: "GET",
73
+ endpoint: "/:id",
74
+ handlerCode: "findCollectionEntityById",
75
+ },
76
+ {
77
+ code: "create",
78
+ method: "POST",
79
+ endpoint: "",
80
+ handlerCode: "createCollectionEntity",
81
+ },
82
+ {
83
+ code: "updateById",
84
+ method: "PATCH",
85
+ endpoint: "/:id",
86
+ handlerCode: "updateCollectionEntityById",
87
+ },
88
+ {
89
+ code: "deleteById",
90
+ method: "DELETE",
91
+ endpoint: "/:id",
92
+ handlerCode: "deleteCollectionEntityById",
93
+ },
94
+ ];
95
+
96
+ class DataManager implements RapidPlugin {
97
+ get code(): string {
98
+ return "dataManager";
99
+ }
100
+
101
+ get description(): string {
102
+ return "对数据进行管理,提供增删改查等接口。";
103
+ }
104
+
105
+ get extendingAbilities(): RpdServerPluginExtendingAbilities[] {
106
+ return [];
107
+ }
108
+
109
+ get configurableTargets(): RpdServerPluginConfigurableTargetOptions[] {
110
+ return [];
111
+ }
112
+
113
+ get configurations(): RpdConfigurationItemOptions[] {
114
+ return [];
115
+ }
116
+
117
+ async registerActionHandlers(server: IRpdServer): Promise<any> {
118
+ server.registerActionHandler(this, findCollectionEntities);
119
+ server.registerActionHandler(this, findCollectionEntityById);
120
+ server.registerActionHandler(this, countCollectionEntities);
121
+ server.registerActionHandler(this, createCollectionEntity);
122
+ server.registerActionHandler(this, createCollectionEntitiesBatch);
123
+ server.registerActionHandler(this, updateCollectionEntityById);
124
+ server.registerActionHandler(this, addEntityRelations);
125
+ server.registerActionHandler(this, removeEntityRelations);
126
+ server.registerActionHandler(this, deleteCollectionEntities);
127
+ server.registerActionHandler(this, deleteCollectionEntityById);
128
+ server.registerActionHandler(this, queryDatabase);
129
+ }
130
+
131
+ async configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any> {
132
+ const { models } = applicationConfig;
133
+ const routes: RpdRoute[] = [];
134
+
135
+ models.forEach((model) => {
136
+ const { namespace, singularCode, pluralCode } = model;
137
+
138
+ routeConfigs.forEach((routeConfig) => {
139
+ routes.push({
140
+ namespace,
141
+ name: `${namespace}.${singularCode}.${routeConfig.code}`,
142
+ code: `${namespace}.${singularCode}.${routeConfig.code}`,
143
+ type: "RESTful",
144
+ method: routeConfig.method,
145
+ endpoint: `/${namespace}/${pluralCode}${routeConfig.endpoint}`,
146
+ actions: [
147
+ {
148
+ code: routeConfig.handlerCode,
149
+ config: {
150
+ namespace,
151
+ singularCode,
152
+ } as RunEntityActionHandlerOptions,
153
+ },
154
+ ],
155
+ });
156
+ });
157
+ });
158
+
159
+ server.appendApplicationConfig({ routes });
160
+ }
161
+ }
162
+
163
+ export default DataManager;
@@ -1,20 +1,20 @@
1
- import { AddEntityRelationsOptions, RunEntityActionHandlerOptions } from "~/types";
2
- import { mergeInput } from "~/helpers/inputHelper";
3
- import { ActionHandlerContext } from "~/core/actionHandler";
4
- import { RapidPlugin } from "~/core/server";
5
-
6
- export const code = "addEntityRelations";
7
-
8
- export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
9
- const { logger, server, input } = ctx;
10
-
11
- const { defaultInput, fixedInput } = options;
12
- const mergedInput: AddEntityRelationsOptions = mergeInput(defaultInput, input, fixedInput);
13
- logger.debug(`Running ${code} handler...`, { defaultInput, fixedInput, mergedInput });
14
-
15
- const entityManager = server.getEntityManager(options.singularCode);
16
- mergedInput.routeContext = ctx.routerContext;
17
- await entityManager.addRelations(mergedInput, plugin);
18
-
19
- ctx.output = {};
20
- }
1
+ import { AddEntityRelationsOptions, RunEntityActionHandlerOptions } from "~/types";
2
+ import { mergeInput } from "~/helpers/inputHelper";
3
+ import { ActionHandlerContext } from "~/core/actionHandler";
4
+ import { RapidPlugin } from "~/core/server";
5
+
6
+ export const code = "addEntityRelations";
7
+
8
+ export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
9
+ const { logger, server, input } = ctx;
10
+
11
+ const { defaultInput, fixedInput } = options;
12
+ const mergedInput: AddEntityRelationsOptions = mergeInput(defaultInput, input, fixedInput);
13
+ logger.debug(`Running ${code} handler...`, { defaultInput, fixedInput, mergedInput });
14
+
15
+ const entityManager = server.getEntityManager(options.singularCode);
16
+ mergedInput.routeContext = ctx.routerContext;
17
+ await entityManager.addRelations(mergedInput, plugin);
18
+
19
+ ctx.output = {};
20
+ }
@@ -1,15 +1,15 @@
1
- import { CountEntityOptions, RunEntityActionHandlerOptions } from "~/types";
2
- import runCollectionEntityActionHandler from "~/helpers/runCollectionEntityActionHandler";
3
- import { removeFiltersWithNullValue } from "~/helpers/filterHelper";
4
- import { ActionHandlerContext } from "~/core/actionHandler";
5
- import { RapidPlugin } from "~/core/server";
6
-
7
- export const code = "countCollectionEntities";
8
-
9
- export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
10
- await runCollectionEntityActionHandler(ctx, options, code, (entityManager, input: CountEntityOptions) => {
11
- input.filters = removeFiltersWithNullValue(input.filters);
12
- input.routeContext = ctx.routerContext;
13
- return entityManager.count(input);
14
- });
15
- }
1
+ import { CountEntityOptions, RunEntityActionHandlerOptions } from "~/types";
2
+ import runCollectionEntityActionHandler from "~/helpers/runCollectionEntityActionHandler";
3
+ import { removeFiltersWithNullValue } from "~/helpers/filterHelper";
4
+ import { ActionHandlerContext } from "~/core/actionHandler";
5
+ import { RapidPlugin } from "~/core/server";
6
+
7
+ export const code = "countCollectionEntities";
8
+
9
+ export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
10
+ await runCollectionEntityActionHandler(ctx, options, code, (entityManager, input: CountEntityOptions) => {
11
+ input.filters = removeFiltersWithNullValue(input.filters);
12
+ input.routeContext = ctx.routerContext;
13
+ return entityManager.count(input);
14
+ });
15
+ }
@@ -1,42 +1,42 @@
1
- import { RunEntityActionHandlerOptions } from "~/types";
2
- import { mergeInput } from "~/helpers/inputHelper";
3
- import { isArray } from "lodash";
4
- import { ActionHandlerContext } from "~/core/actionHandler";
5
- import { RapidPlugin } from "~/core/server";
6
-
7
- export const code = "createCollectionEntitiesBatch";
8
-
9
- export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
10
- const { logger, server, input } = ctx;
11
-
12
- const { defaultInput, fixedInput } = options;
13
- logger.debug(`Running ${code} handler...`, { defaultInput, fixedInput, input });
14
-
15
- const { entities } = input;
16
- if (!isArray(entities)) {
17
- throw new Error("input.entities should be an array.");
18
- }
19
-
20
- const output: any[] = [];
21
- for (const entity of entities) {
22
- const mergedEntity = mergeInput(defaultInput?.entity || {}, entity, fixedInput?.entity);
23
-
24
- const userId = ctx.routerContext.state?.userId;
25
- if (userId) {
26
- mergedEntity.createdBy = userId;
27
- }
28
-
29
- const entityManager = server.getEntityManager(options.singularCode);
30
- const newEntity = await entityManager.createEntity(
31
- {
32
- entity: mergedEntity,
33
- routeContext: ctx.routerContext,
34
- },
35
- plugin,
36
- );
37
-
38
- output.push(newEntity);
39
- }
40
-
41
- ctx.output = output;
42
- }
1
+ import { RunEntityActionHandlerOptions } from "~/types";
2
+ import { mergeInput } from "~/helpers/inputHelper";
3
+ import { isArray } from "lodash";
4
+ import { ActionHandlerContext } from "~/core/actionHandler";
5
+ import { RapidPlugin } from "~/core/server";
6
+
7
+ export const code = "createCollectionEntitiesBatch";
8
+
9
+ export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
10
+ const { logger, server, input } = ctx;
11
+
12
+ const { defaultInput, fixedInput } = options;
13
+ logger.debug(`Running ${code} handler...`, { defaultInput, fixedInput, input });
14
+
15
+ const { entities } = input;
16
+ if (!isArray(entities)) {
17
+ throw new Error("input.entities should be an array.");
18
+ }
19
+
20
+ const output: any[] = [];
21
+ for (const entity of entities) {
22
+ const mergedEntity = mergeInput(defaultInput?.entity || {}, entity, fixedInput?.entity);
23
+
24
+ const userId = ctx.routerContext.state?.userId;
25
+ if (userId) {
26
+ mergedEntity.createdBy = userId;
27
+ }
28
+
29
+ const entityManager = server.getEntityManager(options.singularCode);
30
+ const newEntity = await entityManager.createEntity(
31
+ {
32
+ entity: mergedEntity,
33
+ routeContext: ctx.routerContext,
34
+ },
35
+ plugin,
36
+ );
37
+
38
+ output.push(newEntity);
39
+ }
40
+
41
+ ctx.output = output;
42
+ }
@@ -1,24 +1,24 @@
1
- import { RunEntityActionHandlerOptions } from "~/types";
2
- import { mergeInput } from "~/helpers/inputHelper";
3
- import { ActionHandlerContext } from "~/core/actionHandler";
4
- import { RapidPlugin } from "~/core/server";
5
-
6
- export const code = "createCollectionEntity";
7
-
8
- export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
9
- const { logger, server, input } = ctx;
10
-
11
- const { defaultInput, fixedInput } = options;
12
- const mergedInput = mergeInput(defaultInput, input, fixedInput);
13
- logger.debug(`Running ${code} handler...`, { defaultInput, fixedInput, mergedInput });
14
-
15
- const entityManager = server.getEntityManager(options.singularCode);
16
- const output = await entityManager.createEntity(
17
- {
18
- entity: input,
19
- routeContext: ctx.routerContext,
20
- },
21
- plugin,
22
- );
23
- ctx.output = output;
24
- }
1
+ import { RunEntityActionHandlerOptions } from "~/types";
2
+ import { mergeInput } from "~/helpers/inputHelper";
3
+ import { ActionHandlerContext } from "~/core/actionHandler";
4
+ import { RapidPlugin } from "~/core/server";
5
+
6
+ export const code = "createCollectionEntity";
7
+
8
+ export async function handler(plugin: RapidPlugin, ctx: ActionHandlerContext, options: RunEntityActionHandlerOptions) {
9
+ const { logger, server, input } = ctx;
10
+
11
+ const { defaultInput, fixedInput } = options;
12
+ const mergedInput = mergeInput(defaultInput, input, fixedInput);
13
+ logger.debug(`Running ${code} handler...`, { defaultInput, fixedInput, mergedInput });
14
+
15
+ const entityManager = server.getEntityManager(options.singularCode);
16
+ const output = await entityManager.createEntity(
17
+ {
18
+ entity: input,
19
+ routeContext: ctx.routerContext,
20
+ },
21
+ plugin,
22
+ );
23
+ ctx.output = output;
24
+ }