oak-domain 2.3.2 → 2.4.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 (160) hide show
  1. package/lib/actions/action.d.ts +16 -16
  2. package/lib/actions/action.js +17 -17
  3. package/lib/actions/relation.d.ts +5 -1
  4. package/lib/actions/relation.js +38 -2
  5. package/lib/base-app-domain/ActionDefDict.d.ts +5 -5
  6. package/lib/base-app-domain/ActionDefDict.js +7 -7
  7. package/lib/base-app-domain/EntityDict.d.ts +12 -12
  8. package/lib/base-app-domain/EntityDict.js +2 -2
  9. package/lib/base-app-domain/Modi/Action.d.ts +10 -10
  10. package/lib/base-app-domain/Modi/Action.js +14 -14
  11. package/lib/base-app-domain/Modi/Schema.d.ts +146 -148
  12. package/lib/base-app-domain/Modi/Schema.js +2 -2
  13. package/lib/base-app-domain/Modi/Storage.d.ts +3 -3
  14. package/lib/base-app-domain/Modi/Storage.js +60 -60
  15. package/lib/base-app-domain/ModiEntity/Schema.d.ts +162 -164
  16. package/lib/base-app-domain/ModiEntity/Schema.js +2 -2
  17. package/lib/base-app-domain/ModiEntity/Storage.d.ts +3 -3
  18. package/lib/base-app-domain/ModiEntity/Storage.js +26 -26
  19. package/lib/base-app-domain/Oper/Schema.d.ts +144 -146
  20. package/lib/base-app-domain/Oper/Schema.js +2 -2
  21. package/lib/base-app-domain/Oper/Storage.d.ts +3 -3
  22. package/lib/base-app-domain/Oper/Storage.js +29 -29
  23. package/lib/base-app-domain/OperEntity/Schema.d.ts +178 -180
  24. package/lib/base-app-domain/OperEntity/Schema.js +2 -2
  25. package/lib/base-app-domain/OperEntity/Storage.d.ts +3 -3
  26. package/lib/base-app-domain/OperEntity/Storage.js +26 -26
  27. package/lib/base-app-domain/Storage.d.ts +3 -3
  28. package/lib/base-app-domain/Storage.js +15 -15
  29. package/lib/base-app-domain/User/Schema.d.ts +128 -130
  30. package/lib/base-app-domain/User/Schema.js +2 -2
  31. package/lib/base-app-domain/User/Storage.d.ts +3 -3
  32. package/lib/base-app-domain/User/Storage.js +25 -25
  33. package/lib/base-app-domain/_SubQuery.d.ts +36 -36
  34. package/lib/base-app-domain/_SubQuery.js +2 -2
  35. package/lib/base-app-domain/index.d.ts +3 -3
  36. package/lib/base-app-domain/index.js +6 -6
  37. package/lib/checkers/index.d.ts +5 -5
  38. package/lib/checkers/index.js +15 -13
  39. package/lib/compiler/env.d.ts +11 -11
  40. package/lib/compiler/env.js +39 -39
  41. package/lib/compiler/schemalBuilder.d.ts +2 -2
  42. package/lib/compiler/schemalBuilder.js +3301 -3245
  43. package/lib/compiler/uiBuilder.d.ts +1 -1
  44. package/lib/compiler/uiBuilder.js +3 -3
  45. package/lib/entities/Modi.d.ts +11 -11
  46. package/lib/entities/Modi.js +46 -46
  47. package/lib/entities/ModiEntity.d.ts +8 -8
  48. package/lib/entities/ModiEntity.js +15 -15
  49. package/lib/entities/Oper.d.ts +10 -10
  50. package/lib/entities/Oper.js +17 -17
  51. package/lib/entities/OperEntity.d.ts +8 -8
  52. package/lib/entities/OperEntity.js +15 -15
  53. package/lib/entities/User.d.ts +7 -7
  54. package/lib/entities/User.js +12 -12
  55. package/lib/store/AsyncRowStore.d.ts +48 -48
  56. package/lib/store/AsyncRowStore.js +183 -183
  57. package/lib/store/CascadeStore.d.ts +91 -91
  58. package/lib/store/CascadeStore.js +1594 -1594
  59. package/lib/store/SyncRowStore.d.ts +29 -29
  60. package/lib/store/SyncRowStore.js +48 -48
  61. package/lib/store/TriggerExecutor.d.ts +32 -32
  62. package/lib/store/TriggerExecutor.js +527 -508
  63. package/lib/store/actionDef.d.ts +9 -9
  64. package/lib/store/actionDef.js +135 -135
  65. package/lib/store/checker.d.ts +13 -7
  66. package/lib/store/checker.js +498 -391
  67. package/lib/store/filter.d.ts +109 -100
  68. package/lib/store/filter.js +893 -878
  69. package/lib/store/modi.d.ts +13 -13
  70. package/lib/store/modi.js +198 -206
  71. package/lib/store/relation.d.ts +13 -13
  72. package/lib/store/relation.js +66 -66
  73. package/lib/store/selection.d.ts +7 -7
  74. package/lib/store/selection.js +235 -235
  75. package/lib/triggers/index.d.ts +6 -6
  76. package/lib/triggers/index.js +11 -11
  77. package/lib/triggers/modi.d.ts +5 -5
  78. package/lib/triggers/modi.js +72 -72
  79. package/lib/types/Action.d.ts +18 -14
  80. package/lib/types/Action.js +2 -2
  81. package/lib/types/AppLoader.d.ts +11 -11
  82. package/lib/types/AppLoader.js +10 -10
  83. package/lib/types/Aspect.d.ts +12 -12
  84. package/lib/types/Aspect.js +4 -4
  85. package/lib/types/Auth.d.ts +66 -66
  86. package/lib/types/Auth.js +2 -2
  87. package/lib/types/Connector.d.ts +26 -26
  88. package/lib/types/Connector.js +9 -9
  89. package/lib/types/Context.d.ts +7 -7
  90. package/lib/types/Context.js +3 -3
  91. package/lib/types/DataType.d.ts +18 -18
  92. package/lib/types/DataType.js +5 -5
  93. package/lib/types/Demand.d.ts +77 -77
  94. package/lib/types/Demand.js +9 -9
  95. package/lib/types/Endpoint.d.ts +11 -0
  96. package/lib/types/Endpoint.js +3 -0
  97. package/lib/types/Entity.d.ts +176 -190
  98. package/lib/types/Entity.js +14 -15
  99. package/lib/types/Exception.d.ts +88 -83
  100. package/lib/types/Exception.js +267 -252
  101. package/lib/types/Expression.d.ts +163 -141
  102. package/lib/types/Expression.js +427 -402
  103. package/lib/types/Geo.d.ts +18 -18
  104. package/lib/types/Geo.js +2 -2
  105. package/lib/types/Locale.d.ts +24 -24
  106. package/lib/types/Locale.js +2 -2
  107. package/lib/types/Logger.d.ts +5 -5
  108. package/lib/types/Logger.js +3 -3
  109. package/lib/types/Polyfill.d.ts +23 -23
  110. package/lib/types/Polyfill.js +2 -2
  111. package/lib/types/Port.d.ts +17 -0
  112. package/lib/types/Port.js +2 -0
  113. package/lib/types/RowStore.d.ts +12 -12
  114. package/lib/types/RowStore.js +34 -34
  115. package/lib/types/Storage.d.ts +56 -56
  116. package/lib/types/Storage.js +2 -2
  117. package/lib/types/Timer.d.ts +13 -13
  118. package/lib/types/Timer.js +2 -2
  119. package/lib/types/Trigger.d.ts +100 -100
  120. package/lib/types/Trigger.js +39 -39
  121. package/lib/types/Txn.d.ts +2 -2
  122. package/lib/types/Txn.js +3 -3
  123. package/lib/types/Watcher.d.ts +19 -19
  124. package/lib/types/Watcher.js +4 -4
  125. package/lib/types/index.d.ts +21 -19
  126. package/lib/types/index.js +24 -22
  127. package/lib/types/schema/DataTypes.d.ts +32 -32
  128. package/lib/types/schema/DataTypes.js +3 -3
  129. package/lib/utils/SimpleConnector.d.ts +30 -30
  130. package/lib/utils/SimpleConnector.js +117 -117
  131. package/lib/utils/assert.d.ts +5 -5
  132. package/lib/utils/assert.js +9 -9
  133. package/lib/utils/concurrent.d.ts +15 -15
  134. package/lib/utils/concurrent.js +89 -89
  135. package/lib/utils/cron.d.ts +1 -1
  136. package/lib/utils/cron.js +18 -18
  137. package/lib/utils/date.d.ts +1 -0
  138. package/lib/utils/date.js +18 -0
  139. package/lib/utils/geo.d.ts +4 -4
  140. package/lib/utils/geo.js +24 -24
  141. package/lib/utils/lodash.d.ts +20 -20
  142. package/lib/utils/lodash.js +55 -55
  143. package/lib/utils/random/random.d.ts +1 -1
  144. package/lib/utils/random/random.js +24 -24
  145. package/lib/utils/random/random.mp.d.ts +1 -1
  146. package/lib/utils/random/random.mp.js +25 -25
  147. package/lib/utils/random/random.web.d.ts +1 -1
  148. package/lib/utils/random/random.web.js +17 -17
  149. package/lib/utils/string.d.ts +22 -22
  150. package/lib/utils/string.js +70 -70
  151. package/lib/utils/uuid.d.ts +12 -12
  152. package/lib/utils/uuid.js +194 -194
  153. package/lib/utils/validator.d.ts +23 -23
  154. package/lib/utils/validator.js +123 -123
  155. package/package.json +48 -48
  156. package/src/entities/Modi.ts +68 -68
  157. package/src/entities/ModiEntity.ts +24 -24
  158. package/src/entities/Oper.ts +28 -28
  159. package/src/entities/OperEntity.ts +24 -24
  160. package/src/entities/User.ts +19 -19
@@ -1,183 +1,183 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AsyncContext = void 0;
4
- var tslib_1 = require("tslib");
5
- var assert_1 = tslib_1.__importDefault(require("assert"));
6
- var AsyncContext = /** @class */ (function () {
7
- function AsyncContext(store, headers) {
8
- this.rowStore = store;
9
- this.opRecords = [];
10
- this.events = {
11
- commit: [],
12
- rollback: [],
13
- };
14
- if (headers) {
15
- this.headers = headers;
16
- }
17
- }
18
- AsyncContext.prototype.setHeaders = function (headers) {
19
- this.headers = headers;
20
- };
21
- AsyncContext.prototype.getHeader = function (key) {
22
- if (this.headers) {
23
- return this.headers[key];
24
- }
25
- };
26
- AsyncContext.prototype.getScene = function () {
27
- return this.scene;
28
- };
29
- AsyncContext.prototype.setScene = function (scene) {
30
- this.scene = scene;
31
- };
32
- AsyncContext.prototype.resetEvents = function () {
33
- this.events = {
34
- commit: [],
35
- rollback: [],
36
- };
37
- };
38
- AsyncContext.prototype.on = function (event, callback) {
39
- this.uuid && this.events[event].push(callback);
40
- };
41
- /**
42
- * 一个context中不应该有并发的事务,这里将事务串行化,使用的时候千万要注意不要自己等自己
43
- * @param options
44
- */
45
- AsyncContext.prototype.begin = function (options) {
46
- return tslib_1.__awaiter(this, void 0, void 0, function () {
47
- var _a;
48
- return tslib_1.__generator(this, function (_b) {
49
- switch (_b.label) {
50
- case 0:
51
- if (!!this.uuid) return [3 /*break*/, 2];
52
- _a = this;
53
- return [4 /*yield*/, this.rowStore.begin(options)];
54
- case 1:
55
- _a.uuid = _b.sent();
56
- return [3 /*break*/, 3];
57
- case 2:
58
- (0, assert_1.default)(false);
59
- _b.label = 3;
60
- case 3: return [2 /*return*/];
61
- }
62
- });
63
- });
64
- };
65
- AsyncContext.prototype.commit = function () {
66
- return tslib_1.__awaiter(this, void 0, void 0, function () {
67
- var _a, _b, e, e_1_1;
68
- var e_1, _c;
69
- return tslib_1.__generator(this, function (_d) {
70
- switch (_d.label) {
71
- case 0:
72
- if (!this.uuid) return [3 /*break*/, 10];
73
- return [4 /*yield*/, this.rowStore.commit(this.uuid)];
74
- case 1:
75
- _d.sent();
76
- this.uuid = undefined;
77
- _d.label = 2;
78
- case 2:
79
- _d.trys.push([2, 7, 8, 9]);
80
- _a = tslib_1.__values(this.events.commit), _b = _a.next();
81
- _d.label = 3;
82
- case 3:
83
- if (!!_b.done) return [3 /*break*/, 6];
84
- e = _b.value;
85
- return [4 /*yield*/, e()];
86
- case 4:
87
- _d.sent();
88
- _d.label = 5;
89
- case 5:
90
- _b = _a.next();
91
- return [3 /*break*/, 3];
92
- case 6: return [3 /*break*/, 9];
93
- case 7:
94
- e_1_1 = _d.sent();
95
- e_1 = { error: e_1_1 };
96
- return [3 /*break*/, 9];
97
- case 8:
98
- try {
99
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
100
- }
101
- finally { if (e_1) throw e_1.error; }
102
- return [7 /*endfinally*/];
103
- case 9:
104
- this.resetEvents();
105
- _d.label = 10;
106
- case 10: return [2 /*return*/];
107
- }
108
- });
109
- });
110
- };
111
- AsyncContext.prototype.rollback = function () {
112
- return tslib_1.__awaiter(this, void 0, void 0, function () {
113
- var _a, _b, e, e_2_1;
114
- var e_2, _c;
115
- return tslib_1.__generator(this, function (_d) {
116
- switch (_d.label) {
117
- case 0:
118
- if (!this.uuid) return [3 /*break*/, 10];
119
- return [4 /*yield*/, this.rowStore.rollback(this.uuid)];
120
- case 1:
121
- _d.sent();
122
- // console.log('rollback', this.uuid);
123
- this.uuid = undefined;
124
- _d.label = 2;
125
- case 2:
126
- _d.trys.push([2, 7, 8, 9]);
127
- _a = tslib_1.__values(this.events.rollback), _b = _a.next();
128
- _d.label = 3;
129
- case 3:
130
- if (!!_b.done) return [3 /*break*/, 6];
131
- e = _b.value;
132
- return [4 /*yield*/, e()];
133
- case 4:
134
- _d.sent();
135
- _d.label = 5;
136
- case 5:
137
- _b = _a.next();
138
- return [3 /*break*/, 3];
139
- case 6: return [3 /*break*/, 9];
140
- case 7:
141
- e_2_1 = _d.sent();
142
- e_2 = { error: e_2_1 };
143
- return [3 /*break*/, 9];
144
- case 8:
145
- try {
146
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
147
- }
148
- finally { if (e_2) throw e_2.error; }
149
- return [7 /*endfinally*/];
150
- case 9:
151
- this.resetEvents();
152
- _d.label = 10;
153
- case 10: return [2 /*return*/];
154
- }
155
- });
156
- });
157
- };
158
- AsyncContext.prototype.operate = function (entity, operation, option) {
159
- return this.rowStore.operate(entity, operation, this, option);
160
- };
161
- AsyncContext.prototype.select = function (entity, selection, option) {
162
- return this.rowStore.select(entity, selection, this, option);
163
- };
164
- AsyncContext.prototype.aggregate = function (entity, aggregation, option) {
165
- return this.rowStore.aggregate(entity, aggregation, this, option);
166
- };
167
- AsyncContext.prototype.count = function (entity, selection, option) {
168
- return this.rowStore.count(entity, selection, this, option);
169
- };
170
- AsyncContext.prototype.mergeMultipleResults = function (toBeMerged) {
171
- return this.rowStore.mergeMultipleResults(toBeMerged);
172
- };
173
- AsyncContext.prototype.getCurrentTxnId = function () {
174
- return this.uuid;
175
- };
176
- AsyncContext.prototype.getSchema = function () {
177
- return this.rowStore.getSchema();
178
- };
179
- return AsyncContext;
180
- }());
181
- exports.AsyncContext = AsyncContext;
182
- ;
183
- ;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AsyncContext = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var assert_1 = tslib_1.__importDefault(require("assert"));
6
+ var AsyncContext = /** @class */ (function () {
7
+ function AsyncContext(store, headers) {
8
+ this.rowStore = store;
9
+ this.opRecords = [];
10
+ this.events = {
11
+ commit: [],
12
+ rollback: [],
13
+ };
14
+ if (headers) {
15
+ this.headers = headers;
16
+ }
17
+ }
18
+ AsyncContext.prototype.setHeaders = function (headers) {
19
+ this.headers = headers;
20
+ };
21
+ AsyncContext.prototype.getHeader = function (key) {
22
+ if (this.headers) {
23
+ return this.headers[key];
24
+ }
25
+ };
26
+ AsyncContext.prototype.getScene = function () {
27
+ return this.scene;
28
+ };
29
+ AsyncContext.prototype.setScene = function (scene) {
30
+ this.scene = scene;
31
+ };
32
+ AsyncContext.prototype.resetEvents = function () {
33
+ this.events = {
34
+ commit: [],
35
+ rollback: [],
36
+ };
37
+ };
38
+ AsyncContext.prototype.on = function (event, callback) {
39
+ this.uuid && this.events[event].push(callback);
40
+ };
41
+ /**
42
+ * 一个context中不应该有并发的事务,这里将事务串行化,使用的时候千万要注意不要自己等自己
43
+ * @param options
44
+ */
45
+ AsyncContext.prototype.begin = function (options) {
46
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
47
+ var _a;
48
+ return tslib_1.__generator(this, function (_b) {
49
+ switch (_b.label) {
50
+ case 0:
51
+ if (!!this.uuid) return [3 /*break*/, 2];
52
+ _a = this;
53
+ return [4 /*yield*/, this.rowStore.begin(options)];
54
+ case 1:
55
+ _a.uuid = _b.sent();
56
+ return [3 /*break*/, 3];
57
+ case 2:
58
+ (0, assert_1.default)(false);
59
+ _b.label = 3;
60
+ case 3: return [2 /*return*/];
61
+ }
62
+ });
63
+ });
64
+ };
65
+ AsyncContext.prototype.commit = function () {
66
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
67
+ var _a, _b, e, e_1_1;
68
+ var e_1, _c;
69
+ return tslib_1.__generator(this, function (_d) {
70
+ switch (_d.label) {
71
+ case 0:
72
+ if (!this.uuid) return [3 /*break*/, 10];
73
+ return [4 /*yield*/, this.rowStore.commit(this.uuid)];
74
+ case 1:
75
+ _d.sent();
76
+ this.uuid = undefined;
77
+ _d.label = 2;
78
+ case 2:
79
+ _d.trys.push([2, 7, 8, 9]);
80
+ _a = tslib_1.__values(this.events.commit), _b = _a.next();
81
+ _d.label = 3;
82
+ case 3:
83
+ if (!!_b.done) return [3 /*break*/, 6];
84
+ e = _b.value;
85
+ return [4 /*yield*/, e()];
86
+ case 4:
87
+ _d.sent();
88
+ _d.label = 5;
89
+ case 5:
90
+ _b = _a.next();
91
+ return [3 /*break*/, 3];
92
+ case 6: return [3 /*break*/, 9];
93
+ case 7:
94
+ e_1_1 = _d.sent();
95
+ e_1 = { error: e_1_1 };
96
+ return [3 /*break*/, 9];
97
+ case 8:
98
+ try {
99
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
100
+ }
101
+ finally { if (e_1) throw e_1.error; }
102
+ return [7 /*endfinally*/];
103
+ case 9:
104
+ this.resetEvents();
105
+ _d.label = 10;
106
+ case 10: return [2 /*return*/];
107
+ }
108
+ });
109
+ });
110
+ };
111
+ AsyncContext.prototype.rollback = function () {
112
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
113
+ var _a, _b, e, e_2_1;
114
+ var e_2, _c;
115
+ return tslib_1.__generator(this, function (_d) {
116
+ switch (_d.label) {
117
+ case 0:
118
+ if (!this.uuid) return [3 /*break*/, 10];
119
+ return [4 /*yield*/, this.rowStore.rollback(this.uuid)];
120
+ case 1:
121
+ _d.sent();
122
+ // console.log('rollback', this.uuid);
123
+ this.uuid = undefined;
124
+ _d.label = 2;
125
+ case 2:
126
+ _d.trys.push([2, 7, 8, 9]);
127
+ _a = tslib_1.__values(this.events.rollback), _b = _a.next();
128
+ _d.label = 3;
129
+ case 3:
130
+ if (!!_b.done) return [3 /*break*/, 6];
131
+ e = _b.value;
132
+ return [4 /*yield*/, e()];
133
+ case 4:
134
+ _d.sent();
135
+ _d.label = 5;
136
+ case 5:
137
+ _b = _a.next();
138
+ return [3 /*break*/, 3];
139
+ case 6: return [3 /*break*/, 9];
140
+ case 7:
141
+ e_2_1 = _d.sent();
142
+ e_2 = { error: e_2_1 };
143
+ return [3 /*break*/, 9];
144
+ case 8:
145
+ try {
146
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
147
+ }
148
+ finally { if (e_2) throw e_2.error; }
149
+ return [7 /*endfinally*/];
150
+ case 9:
151
+ this.resetEvents();
152
+ _d.label = 10;
153
+ case 10: return [2 /*return*/];
154
+ }
155
+ });
156
+ });
157
+ };
158
+ AsyncContext.prototype.operate = function (entity, operation, option) {
159
+ return this.rowStore.operate(entity, operation, this, option);
160
+ };
161
+ AsyncContext.prototype.select = function (entity, selection, option) {
162
+ return this.rowStore.select(entity, selection, this, option);
163
+ };
164
+ AsyncContext.prototype.aggregate = function (entity, aggregation, option) {
165
+ return this.rowStore.aggregate(entity, aggregation, this, option);
166
+ };
167
+ AsyncContext.prototype.count = function (entity, selection, option) {
168
+ return this.rowStore.count(entity, selection, this, option);
169
+ };
170
+ AsyncContext.prototype.mergeMultipleResults = function (toBeMerged) {
171
+ return this.rowStore.mergeMultipleResults(toBeMerged);
172
+ };
173
+ AsyncContext.prototype.getCurrentTxnId = function () {
174
+ return this.uuid;
175
+ };
176
+ AsyncContext.prototype.getSchema = function () {
177
+ return this.rowStore.getSchema();
178
+ };
179
+ return AsyncContext;
180
+ }());
181
+ exports.AsyncContext = AsyncContext;
182
+ ;
183
+ ;
@@ -1,91 +1,91 @@
1
- import { EntityDict, OperateOption, SelectOption, OperationResult, DeduceFilter, AggregationResult } from "../types/Entity";
2
- import { EntityDict as BaseEntityDict } from '../base-app-domain';
3
- import { RowStore } from '../types/RowStore';
4
- import { StorageSchema } from '../types/Storage';
5
- import { SyncContext } from "./SyncRowStore";
6
- import { AsyncContext } from "./AsyncRowStore";
7
- /**这个用来处理级联的select和update,对不同能力的 */
8
- export declare abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> extends RowStore<ED> {
9
- constructor(storageSchema: StorageSchema<ED>);
10
- protected abstract supportManyToOneJoin(): boolean;
11
- protected abstract supportMultipleCreate(): boolean;
12
- protected abstract selectAbjointRow<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Partial<ED[T]['Schema']>[];
13
- protected abstract updateAbjointRow<T extends keyof ED, OP extends OperateOption, Cxt extends SyncContext<ED>>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): number;
14
- protected abstract selectAbjointRowAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Promise<Partial<ED[T]['Schema']>[]>;
15
- protected abstract updateAbjointRowAsync<T extends keyof ED, OP extends OperateOption, Cxt extends AsyncContext<ED>>(entity: T, operation: ED[T]['Create'] | ED[T]['Update'] | ED[T]['Remove'], context: Cxt, option: OP): Promise<number>;
16
- protected abstract aggregateSync<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): AggregationResult<ED[T]['Schema']>;
17
- protected abstract aggregateAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): Promise<AggregationResult<ED[T]['Schema']>>;
18
- protected destructCascadeSelect<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED> | AsyncContext<ED>>(entity: T, projection2: ED[T]['Selection']['data'], context: Cxt, cascadeSelectFn: <T2 extends keyof ED>(entity2: T2, selection: ED[T2]['Selection'], context: Cxt, op: OP) => Partial<ED[T2]['Schema']>[] | Promise<Partial<ED[T2]['Schema']>[]>, aggregateFn: <T2 extends keyof ED>(entity2: T2, aggregation: ED[T2]['Aggregation'], context: Cxt, op: OP) => AggregationResult<ED[T2]['Schema']> | Promise<AggregationResult<ED[T2]['Schema']>>, option: OP): {
19
- projection: ED[T]["Selection"]["data"];
20
- cascadeSelectionFns: ((result: Partial<ED[T]['Schema']>[]) => Promise<void> | void)[];
21
- };
22
- /**
23
- * 级联更新
24
- * A --> B
25
- 多对一:A CREATE/B CREATE,B data的主键赋到A的data上
26
- A CREATE/B UPDATE,B filter的主键来自A的data
27
- A UPDATE/B CREATE,B data的主键赋到A的data上
28
- A UPDATE/B UPDATE,B filter的主键来自A的row
29
- A UPDATE/B REMOVE,B filter的主键来自A的row
30
- A REMOVE/B UPDATE,B filter的主键来自A的row
31
- A REMOVE/B REMOVE,B filter的主键来自A的row
32
-
33
- 一对多:A CREATE/B CREATE,A data上的主键赋到B的data上
34
- A CREATE/B UPDATE,A data上的主键赋到B的data上
35
- A UPDATE/B CREATE,A filter上的主键赋到B的data上(一定是带主键的filter)
36
- A UPDATE/B UPDATE,A filter上的主键赋到B的filter上(一定是带主键的filter)
37
- A UPDATE/B REMOVE,A filter上的主键赋到B的filter上(一定是带主键的filter)
38
- A REMOVE/B UPDATE,A filter上的主键赋到B的filter上(且B关于A的外键清空)
39
- A REMOVE/B REMOVE,A filter上的主键赋到B的filter上
40
- *
41
- * 延时更新,
42
- * A(业务级别的申请对象) ---> B(业务级别需要更新的对象)
43
- * 两者必须通过entity/entityId关联
44
- * 此时需要把对B的更新记录成一条新插入的Modi对象,并将A上的entity/entityId指向该对象(新生成的Modi对象的id与此operation的id保持一致)
45
- * @param entity
46
- * @param action
47
- * @param data
48
- * @param context
49
- * @param option
50
- * @param result
51
- * @param filter
52
- * @returns
53
- */
54
- protected destructCascadeUpdate<T extends keyof ED, Cxt extends SyncContext<ED> | AsyncContext<ED>, OP extends OperateOption, R>(entity: T, action: ED[T]['Action'], data: ED[T]['CreateSingle']['data'] | ED[T]['Update']['data'] | ED[T]['Remove']['data'], context: Cxt, option: OP, cascadeUpdate: <T2 extends keyof ED>(entity: T2, operation: ED[T2]['Operation'], context: Cxt, option: OP) => R, filter?: DeduceFilter<ED[T]['Schema']>): {
55
- data: Record<string, any>;
56
- beforeFns: (() => R)[];
57
- afterFns: (() => R)[];
58
- };
59
- protected preProcessDataCreated<T extends keyof ED>(entity: T, data: ED[T]['Create']['data']): void;
60
- protected preProcessDataUpdated<T extends keyof ED>(data: ED[T]['Update']['data']): void;
61
- judgeRelation(entity: keyof ED, attr: string): string | 2 | 1 | string[] | 0;
62
- /**
63
- * 和具体的update过程无关的例程放在这里,包括对later动作的处理、对oper的记录以及对record的收集等
64
- * @param entity
65
- * @param operation
66
- * @param context
67
- * @param option
68
- */
69
- private doUpdateSingleRowAsync;
70
- private doUpdateSingleRow;
71
- protected cascadeUpdate<T extends keyof ED, Cxt extends SyncContext<ED>, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): OperationResult<ED>;
72
- /**
73
- *
74
- * @param entity
75
- * @param operation
76
- * @param context
77
- * @param option
78
- */
79
- protected cascadeUpdateAsync<T extends keyof ED, Cxt extends AsyncContext<ED>, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): Promise<OperationResult<ED>>;
80
- protected cascadeSelect<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Partial<ED[T]['Schema']>[];
81
- /**
82
- * 将一次查询的结果集加入result
83
- * todo 如果是supportMtoOJoin,这里还要解构(未充分测试)
84
- * @param entity
85
- * @param rows
86
- * @param context
87
- */
88
- private addToResultSelections;
89
- private addSingleRowToResultSelections;
90
- protected cascadeSelectAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Promise<Partial<ED[T]['Schema']>[]>;
91
- }
1
+ import { EntityDict, OperateOption, SelectOption, OperationResult, AggregationResult } from "../types/Entity";
2
+ import { EntityDict as BaseEntityDict } from '../base-app-domain';
3
+ import { RowStore } from '../types/RowStore';
4
+ import { StorageSchema } from '../types/Storage';
5
+ import { SyncContext } from "./SyncRowStore";
6
+ import { AsyncContext } from "./AsyncRowStore";
7
+ /**这个用来处理级联的select和update,对不同能力的 */
8
+ export declare abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> extends RowStore<ED> {
9
+ constructor(storageSchema: StorageSchema<ED>);
10
+ protected abstract supportManyToOneJoin(): boolean;
11
+ protected abstract supportMultipleCreate(): boolean;
12
+ protected abstract selectAbjointRow<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Partial<ED[T]['Schema']>[];
13
+ protected abstract updateAbjointRow<T extends keyof ED, OP extends OperateOption, Cxt extends SyncContext<ED>>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): number;
14
+ protected abstract selectAbjointRowAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Promise<Partial<ED[T]['Schema']>[]>;
15
+ protected abstract updateAbjointRowAsync<T extends keyof ED, OP extends OperateOption, Cxt extends AsyncContext<ED>>(entity: T, operation: ED[T]['Create'] | ED[T]['Update'] | ED[T]['Remove'], context: Cxt, option: OP): Promise<number>;
16
+ protected abstract aggregateSync<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): AggregationResult<ED[T]['Schema']>;
17
+ protected abstract aggregateAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): Promise<AggregationResult<ED[T]['Schema']>>;
18
+ protected destructCascadeSelect<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED> | AsyncContext<ED>>(entity: T, projection2: ED[T]['Selection']['data'], context: Cxt, cascadeSelectFn: <T2 extends keyof ED>(entity2: T2, selection: ED[T2]['Selection'], context: Cxt, op: OP) => Partial<ED[T2]['Schema']>[] | Promise<Partial<ED[T2]['Schema']>[]>, aggregateFn: <T2 extends keyof ED>(entity2: T2, aggregation: ED[T2]['Aggregation'], context: Cxt, op: OP) => AggregationResult<ED[T2]['Schema']> | Promise<AggregationResult<ED[T2]['Schema']>>, option: OP): {
19
+ projection: ED[T]["Selection"]["data"];
20
+ cascadeSelectionFns: ((result: Partial<ED[T]['Schema']>[]) => Promise<void> | void)[];
21
+ };
22
+ /**
23
+ * 级联更新
24
+ * A --> B
25
+ 多对一:A CREATE/B CREATE,B data的主键赋到A的data上
26
+ A CREATE/B UPDATE,B filter的主键来自A的data
27
+ A UPDATE/B CREATE,B data的主键赋到A的data上
28
+ A UPDATE/B UPDATE,B filter的主键来自A的row
29
+ A UPDATE/B REMOVE,B filter的主键来自A的row
30
+ A REMOVE/B UPDATE,B filter的主键来自A的row
31
+ A REMOVE/B REMOVE,B filter的主键来自A的row
32
+
33
+ 一对多:A CREATE/B CREATE,A data上的主键赋到B的data上
34
+ A CREATE/B UPDATE,A data上的主键赋到B的data上
35
+ A UPDATE/B CREATE,A filter上的主键赋到B的data上(一定是带主键的filter)
36
+ A UPDATE/B UPDATE,A filter上的主键赋到B的filter上(一定是带主键的filter)
37
+ A UPDATE/B REMOVE,A filter上的主键赋到B的filter上(一定是带主键的filter)
38
+ A REMOVE/B UPDATE,A filter上的主键赋到B的filter上(且B关于A的外键清空)
39
+ A REMOVE/B REMOVE,A filter上的主键赋到B的filter上
40
+ *
41
+ * 延时更新,
42
+ * A(业务级别的申请对象) ---> B(业务级别需要更新的对象)
43
+ * 两者必须通过entity/entityId关联
44
+ * 此时需要把对B的更新记录成一条新插入的Modi对象,并将A上的entity/entityId指向该对象(新生成的Modi对象的id与此operation的id保持一致)
45
+ * @param entity
46
+ * @param action
47
+ * @param data
48
+ * @param context
49
+ * @param option
50
+ * @param result
51
+ * @param filter
52
+ * @returns
53
+ */
54
+ protected destructCascadeUpdate<T extends keyof ED, Cxt extends SyncContext<ED> | AsyncContext<ED>, OP extends OperateOption, R>(entity: T, action: ED[T]['Action'], data: ED[T]['CreateSingle']['data'] | ED[T]['Update']['data'] | ED[T]['Remove']['data'], context: Cxt, option: OP, cascadeUpdate: <T2 extends keyof ED>(entity: T2, operation: ED[T2]['Operation'], context: Cxt, option: OP) => R, filter?: ED[T]['Update']['filter']): {
55
+ data: Record<string, any>;
56
+ beforeFns: (() => R)[];
57
+ afterFns: (() => R)[];
58
+ };
59
+ protected preProcessDataCreated<T extends keyof ED>(entity: T, data: ED[T]['Create']['data']): void;
60
+ protected preProcessDataUpdated(data: Record<string, any>): void;
61
+ judgeRelation(entity: keyof ED, attr: string): string | 1 | 2 | string[] | 0;
62
+ /**
63
+ * 和具体的update过程无关的例程放在这里,包括对later动作的处理、对oper的记录以及对record的收集等
64
+ * @param entity
65
+ * @param operation
66
+ * @param context
67
+ * @param option
68
+ */
69
+ private doUpdateSingleRowAsync;
70
+ private doUpdateSingleRow;
71
+ protected cascadeUpdate<T extends keyof ED, Cxt extends SyncContext<ED>, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): OperationResult<ED>;
72
+ /**
73
+ *
74
+ * @param entity
75
+ * @param operation
76
+ * @param context
77
+ * @param option
78
+ */
79
+ protected cascadeUpdateAsync<T extends keyof ED, Cxt extends AsyncContext<ED>, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OP): Promise<OperationResult<ED>>;
80
+ protected cascadeSelect<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Partial<ED[T]['Schema']>[];
81
+ /**
82
+ * 将一次查询的结果集加入result
83
+ * todo 如果是supportMtoOJoin,这里还要解构(未充分测试)
84
+ * @param entity
85
+ * @param rows
86
+ * @param context
87
+ */
88
+ private addToResultSelections;
89
+ private addSingleRowToResultSelections;
90
+ protected cascadeSelectAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: OP): Promise<Partial<ED[T]['Schema']>[]>;
91
+ }