oak-domain 2.0.2 → 2.1.0

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 (150) 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 +1 -1
  4. package/lib/actions/relation.js +2 -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 +161 -161
  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 +176 -176
  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 +158 -158
  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 +193 -193
  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 +137 -137
  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 +8 -8
  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 +3137 -3137
  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 +45 -45
  56. package/lib/store/AsyncRowStore.js +180 -180
  57. package/lib/store/CascadeStore.d.ts +89 -89
  58. package/lib/store/CascadeStore.js +1515 -1511
  59. package/lib/store/SyncRowStore.d.ts +26 -26
  60. package/lib/store/SyncRowStore.js +45 -45
  61. package/lib/store/TriggerExecutor.d.ts +32 -32
  62. package/lib/store/TriggerExecutor.js +470 -470
  63. package/lib/store/actionDef.d.ts +9 -9
  64. package/lib/store/actionDef.js +135 -135
  65. package/lib/store/checker.d.ts +6 -6
  66. package/lib/store/checker.js +218 -165
  67. package/lib/store/filter.d.ts +99 -99
  68. package/lib/store/filter.js +855 -855
  69. package/lib/store/modi.d.ts +13 -13
  70. package/lib/store/modi.js +172 -172
  71. package/lib/store/relation.d.ts +13 -13
  72. package/lib/store/relation.js +64 -64
  73. package/lib/store/selection.d.ts +7 -7
  74. package/lib/store/selection.js +228 -228
  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 +14 -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 +57 -31
  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 +6 -6
  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/Entity.d.ts +159 -159
  96. package/lib/types/Entity.js +15 -15
  97. package/lib/types/Exception.d.ts +83 -83
  98. package/lib/types/Exception.js +252 -252
  99. package/lib/types/Expression.d.ts +141 -141
  100. package/lib/types/Expression.js +387 -387
  101. package/lib/types/Geo.d.ts +18 -18
  102. package/lib/types/Geo.js +2 -2
  103. package/lib/types/Locale.d.ts +24 -24
  104. package/lib/types/Locale.js +2 -2
  105. package/lib/types/Logger.d.ts +5 -5
  106. package/lib/types/Logger.js +3 -3
  107. package/lib/types/Polyfill.d.ts +23 -23
  108. package/lib/types/Polyfill.js +2 -2
  109. package/lib/types/RowStore.d.ts +12 -12
  110. package/lib/types/RowStore.js +34 -34
  111. package/lib/types/Storage.d.ts +55 -55
  112. package/lib/types/Storage.js +2 -2
  113. package/lib/types/Trigger.d.ts +88 -89
  114. package/lib/types/Trigger.js +39 -39
  115. package/lib/types/Txn.d.ts +2 -2
  116. package/lib/types/Txn.js +3 -3
  117. package/lib/types/Watcher.d.ts +19 -19
  118. package/lib/types/Watcher.js +4 -4
  119. package/lib/types/index.d.ts +18 -18
  120. package/lib/types/index.js +21 -21
  121. package/lib/types/schema/DataTypes.d.ts +32 -32
  122. package/lib/types/schema/DataTypes.js +3 -3
  123. package/lib/utils/SimpleConnector.d.ts +30 -30
  124. package/lib/utils/SimpleConnector.js +102 -102
  125. package/lib/utils/assert.d.ts +5 -5
  126. package/lib/utils/assert.js +9 -9
  127. package/lib/utils/concurrent.d.ts +15 -15
  128. package/lib/utils/concurrent.js +89 -89
  129. package/lib/utils/geo.d.ts +4 -4
  130. package/lib/utils/geo.js +24 -24
  131. package/lib/utils/lodash.d.ts +5 -5
  132. package/lib/utils/lodash.js +38 -38
  133. package/lib/utils/random/random.d.ts +1 -1
  134. package/lib/utils/random/random.js +24 -24
  135. package/lib/utils/random/random.mp.d.ts +1 -1
  136. package/lib/utils/random/random.mp.js +25 -25
  137. package/lib/utils/random/random.web.d.ts +1 -1
  138. package/lib/utils/random/random.web.js +17 -17
  139. package/lib/utils/string.d.ts +22 -22
  140. package/lib/utils/string.js +70 -70
  141. package/lib/utils/uuid.d.ts +12 -12
  142. package/lib/utils/uuid.js +182 -182
  143. package/lib/utils/validator.d.ts +23 -23
  144. package/lib/utils/validator.js +123 -123
  145. package/package.json +47 -47
  146. package/src/entities/Modi.ts +68 -68
  147. package/src/entities/ModiEntity.ts +24 -24
  148. package/src/entities/Oper.ts +28 -28
  149. package/src/entities/OperEntity.ts +24 -24
  150. package/src/entities/User.ts +19 -19
@@ -1,13 +1,13 @@
1
- import { EntityDict as BaseEntityDict } from '../base-app-domain';
2
- import { OpSchema as Modi } from '../base-app-domain/Modi/Schema';
3
- import { Operation, StorageSchema, RowChecker, EntityDict, OperateOption, Trigger } from '../types';
4
- import { AsyncContext } from './AsyncRowStore';
5
- import { SyncContext } from './SyncRowStore';
6
- export declare function createOperationsFromModies(modies: Modi[]): Array<{
7
- operation: Operation<string, Object, Object>;
8
- entity: string;
9
- }>;
10
- export declare function applyModis<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, Op extends OperateOption>(filter: ED['modi']['Selection']['filter'], context: Cxt, option: Op): Promise<import("../types").OperationResult<ED>>;
11
- export declare function abandonModis<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, Op extends OperateOption>(filter: ED['modi']['Selection']['filter'], context: Cxt, option: Op): Promise<import("../types").OperationResult<ED>>;
12
- export declare function createModiRelatedCheckers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED> | SyncContext<ED>>(schema: StorageSchema<ED>): RowChecker<ED, keyof ED, Cxt>[];
13
- export declare function createModiRelatedTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>>(schema: StorageSchema<ED>): Trigger<ED, keyof ED, Cxt>[];
1
+ import { EntityDict as BaseEntityDict } from '../base-app-domain';
2
+ import { OpSchema as Modi } from '../base-app-domain/Modi/Schema';
3
+ import { Operation, StorageSchema, RowChecker, EntityDict, OperateOption, Trigger } from '../types';
4
+ import { AsyncContext } from './AsyncRowStore';
5
+ import { SyncContext } from './SyncRowStore';
6
+ export declare function createOperationsFromModies(modies: Modi[]): Array<{
7
+ operation: Operation<string, Object, Object>;
8
+ entity: string;
9
+ }>;
10
+ export declare function applyModis<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, Op extends OperateOption>(filter: ED['modi']['Selection']['filter'], context: Cxt, option: Op): Promise<import("../types").OperationResult<ED>>;
11
+ export declare function abandonModis<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, Op extends OperateOption>(filter: ED['modi']['Selection']['filter'], context: Cxt, option: Op): Promise<import("../types").OperationResult<ED>>;
12
+ export declare function createModiRelatedCheckers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED> | SyncContext<ED>>(schema: StorageSchema<ED>): RowChecker<ED, keyof ED, Cxt>[];
13
+ export declare function createModiRelatedTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>>(schema: StorageSchema<ED>): Trigger<ED, keyof ED, Cxt>[];
package/lib/store/modi.js CHANGED
@@ -1,172 +1,172 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createModiRelatedTriggers = exports.createModiRelatedCheckers = exports.abandonModis = exports.applyModis = exports.createOperationsFromModies = void 0;
4
- var tslib_1 = require("tslib");
5
- var action_1 = require("../actions/action");
6
- var lodash_1 = require("../utils/lodash");
7
- var uuid_1 = require("../utils/uuid");
8
- function createOperationsFromModies(modies) {
9
- return modies.map(function (modi) {
10
- return {
11
- entity: modi.targetEntity,
12
- operation: {
13
- id: modi.id,
14
- action: modi.action,
15
- data: modi.data,
16
- filter: modi.filter,
17
- }
18
- };
19
- });
20
- }
21
- exports.createOperationsFromModies = createOperationsFromModies;
22
- function applyModis(filter, context, option) {
23
- return tslib_1.__awaiter(this, void 0, void 0, function () {
24
- var _a, _b, _c;
25
- var _d;
26
- return tslib_1.__generator(this, function (_e) {
27
- switch (_e.label) {
28
- case 0:
29
- _b = (_a = context).operate;
30
- _c = ['modi'];
31
- _d = {};
32
- return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
33
- case 1: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(),
34
- _d.action = 'apply',
35
- _d.data = {},
36
- _d.filter = filter,
37
- _d), Object.assign({}, option, {
38
- blockTrigger: false,
39
- })]))];
40
- }
41
- });
42
- });
43
- }
44
- exports.applyModis = applyModis;
45
- function abandonModis(filter, context, option) {
46
- return tslib_1.__awaiter(this, void 0, void 0, function () {
47
- var _a, _b, _c;
48
- var _d;
49
- return tslib_1.__generator(this, function (_e) {
50
- switch (_e.label) {
51
- case 0:
52
- _b = (_a = context).operate;
53
- _c = ['modi'];
54
- _d = {};
55
- return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
56
- case 1: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(),
57
- _d.action = 'abandon',
58
- _d.data = {},
59
- _d.filter = filter,
60
- _d.sorter = [
61
- {
62
- $attr: {
63
- $$createAt$$: 1,
64
- },
65
- $direction: 'asc',
66
- }
67
- ],
68
- _d), Object.assign({}, option, {
69
- blockTrigger: false,
70
- })]))];
71
- }
72
- });
73
- });
74
- }
75
- exports.abandonModis = abandonModis;
76
- function createModiRelatedCheckers(schema) {
77
- var checkers = [];
78
- var _loop_1 = function (entity) {
79
- var _a = schema[entity], actionType = _a.actionType, actions = _a.actions, inModi = _a.inModi;
80
- if (!inModi || ['readOnly', 'appendOnly'].includes(actionType)) {
81
- return "continue";
82
- }
83
- var restActions = (0, lodash_1.difference)(actions, action_1.appendOnlyActions);
84
- checkers.push({
85
- entity: entity,
86
- action: restActions,
87
- type: 'row',
88
- filter: function (context, option) {
89
- if (option.modiParentId && option.modiParentEntity) {
90
- // 如果本身也是创建modi就允许通过
91
- return {
92
- id: {
93
- $exists: true,
94
- },
95
- };
96
- }
97
- return {
98
- id: {
99
- $nin: {
100
- entity: 'modiEntity',
101
- data: {
102
- entityId: 1,
103
- },
104
- filter: {
105
- entity: entity,
106
- modi: {
107
- iState: 'active',
108
- }
109
- },
110
- },
111
- }
112
- };
113
- },
114
- errMsg: "\u66F4\u65B0\u7684\u5BF9\u8C61".concat(entity, "\u4E0A\u6709\u5C1A\u672A\u7ED3\u675F\u7684modi"),
115
- });
116
- };
117
- for (var entity in schema) {
118
- _loop_1(entity);
119
- }
120
- return checkers;
121
- }
122
- exports.createModiRelatedCheckers = createModiRelatedCheckers;
123
- function createModiRelatedTriggers(schema) {
124
- var _this = this;
125
- var triggers = [];
126
- var _loop_2 = function (entity) {
127
- var inModi = schema[entity].inModi;
128
- if (inModi) {
129
- // 当关联modi的对象被删除时,对应的modi也删除
130
- triggers.push({
131
- name: "\u5F53\u5220\u9664".concat(entity, "\u5BF9\u8C61\u65F6\uFF0C\u5220\u9664\u76F8\u5173\u8054\u8FD8\u6D3B\u8DC3\u7684modi"),
132
- action: 'remove',
133
- entity: entity,
134
- when: 'after',
135
- fn: function (_a, context, option) {
136
- var operation = _a.operation;
137
- return tslib_1.__awaiter(_this, void 0, void 0, function () {
138
- var data, id, _b, _c, _d;
139
- var _e;
140
- return tslib_1.__generator(this, function (_f) {
141
- switch (_f.label) {
142
- case 0:
143
- data = operation.data;
144
- id = data.id;
145
- _c = (_b = context).operate;
146
- _d = ['modi'];
147
- _e = {};
148
- return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
149
- case 1: return [4 /*yield*/, _c.apply(_b, _d.concat([(_e.id = _f.sent(),
150
- _e.action = 'remove',
151
- _e.data = {},
152
- _e.filter = {
153
- entity: entity,
154
- entityId: id,
155
- },
156
- _e), option]))];
157
- case 2:
158
- _f.sent();
159
- return [2 /*return*/, 1];
160
- }
161
- });
162
- });
163
- },
164
- });
165
- }
166
- };
167
- for (var entity in schema) {
168
- _loop_2(entity);
169
- }
170
- return triggers;
171
- }
172
- exports.createModiRelatedTriggers = createModiRelatedTriggers;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createModiRelatedTriggers = exports.createModiRelatedCheckers = exports.abandonModis = exports.applyModis = exports.createOperationsFromModies = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var action_1 = require("../actions/action");
6
+ var lodash_1 = require("../utils/lodash");
7
+ var uuid_1 = require("../utils/uuid");
8
+ function createOperationsFromModies(modies) {
9
+ return modies.map(function (modi) {
10
+ return {
11
+ entity: modi.targetEntity,
12
+ operation: {
13
+ id: modi.id,
14
+ action: modi.action,
15
+ data: modi.data,
16
+ filter: modi.filter,
17
+ }
18
+ };
19
+ });
20
+ }
21
+ exports.createOperationsFromModies = createOperationsFromModies;
22
+ function applyModis(filter, context, option) {
23
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
24
+ var _a, _b, _c;
25
+ var _d;
26
+ return tslib_1.__generator(this, function (_e) {
27
+ switch (_e.label) {
28
+ case 0:
29
+ _b = (_a = context).operate;
30
+ _c = ['modi'];
31
+ _d = {};
32
+ return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
33
+ case 1: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(),
34
+ _d.action = 'apply',
35
+ _d.data = {},
36
+ _d.filter = filter,
37
+ _d), Object.assign({}, option, {
38
+ blockTrigger: false,
39
+ })]))];
40
+ }
41
+ });
42
+ });
43
+ }
44
+ exports.applyModis = applyModis;
45
+ function abandonModis(filter, context, option) {
46
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
47
+ var _a, _b, _c;
48
+ var _d;
49
+ return tslib_1.__generator(this, function (_e) {
50
+ switch (_e.label) {
51
+ case 0:
52
+ _b = (_a = context).operate;
53
+ _c = ['modi'];
54
+ _d = {};
55
+ return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
56
+ case 1: return [2 /*return*/, _b.apply(_a, _c.concat([(_d.id = _e.sent(),
57
+ _d.action = 'abandon',
58
+ _d.data = {},
59
+ _d.filter = filter,
60
+ _d.sorter = [
61
+ {
62
+ $attr: {
63
+ $$createAt$$: 1,
64
+ },
65
+ $direction: 'asc',
66
+ }
67
+ ],
68
+ _d), Object.assign({}, option, {
69
+ blockTrigger: false,
70
+ })]))];
71
+ }
72
+ });
73
+ });
74
+ }
75
+ exports.abandonModis = abandonModis;
76
+ function createModiRelatedCheckers(schema) {
77
+ var checkers = [];
78
+ var _loop_1 = function (entity) {
79
+ var _a = schema[entity], actionType = _a.actionType, actions = _a.actions, inModi = _a.inModi;
80
+ if (!inModi || ['readOnly', 'appendOnly'].includes(actionType)) {
81
+ return "continue";
82
+ }
83
+ var restActions = (0, lodash_1.difference)(actions, action_1.appendOnlyActions);
84
+ checkers.push({
85
+ entity: entity,
86
+ action: restActions,
87
+ type: 'row',
88
+ filter: function (operation, context, option) {
89
+ if (option.modiParentId && option.modiParentEntity) {
90
+ // 如果本身也是创建modi就允许通过
91
+ return {
92
+ id: {
93
+ $exists: true,
94
+ },
95
+ };
96
+ }
97
+ return {
98
+ id: {
99
+ $nin: {
100
+ entity: 'modiEntity',
101
+ data: {
102
+ entityId: 1,
103
+ },
104
+ filter: {
105
+ entity: entity,
106
+ modi: {
107
+ iState: 'active',
108
+ }
109
+ },
110
+ },
111
+ }
112
+ };
113
+ },
114
+ errMsg: "\u66F4\u65B0\u7684\u5BF9\u8C61".concat(entity, "\u4E0A\u6709\u5C1A\u672A\u7ED3\u675F\u7684modi"),
115
+ });
116
+ };
117
+ for (var entity in schema) {
118
+ _loop_1(entity);
119
+ }
120
+ return checkers;
121
+ }
122
+ exports.createModiRelatedCheckers = createModiRelatedCheckers;
123
+ function createModiRelatedTriggers(schema) {
124
+ var _this = this;
125
+ var triggers = [];
126
+ var _loop_2 = function (entity) {
127
+ var inModi = schema[entity].inModi;
128
+ if (inModi) {
129
+ // 当关联modi的对象被删除时,对应的modi也删除
130
+ triggers.push({
131
+ name: "\u5F53\u5220\u9664".concat(entity, "\u5BF9\u8C61\u65F6\uFF0C\u5220\u9664\u76F8\u5173\u8054\u8FD8\u6D3B\u8DC3\u7684modi"),
132
+ action: 'remove',
133
+ entity: entity,
134
+ when: 'after',
135
+ fn: function (_a, context, option) {
136
+ var operation = _a.operation;
137
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
138
+ var data, id, _b, _c, _d;
139
+ var _e;
140
+ return tslib_1.__generator(this, function (_f) {
141
+ switch (_f.label) {
142
+ case 0:
143
+ data = operation.data;
144
+ id = data.id;
145
+ _c = (_b = context).operate;
146
+ _d = ['modi'];
147
+ _e = {};
148
+ return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
149
+ case 1: return [4 /*yield*/, _c.apply(_b, _d.concat([(_e.id = _f.sent(),
150
+ _e.action = 'remove',
151
+ _e.data = {},
152
+ _e.filter = {
153
+ entity: entity,
154
+ entityId: id,
155
+ },
156
+ _e), option]))];
157
+ case 2:
158
+ _f.sent();
159
+ return [2 /*return*/, 1];
160
+ }
161
+ });
162
+ });
163
+ },
164
+ });
165
+ }
166
+ };
167
+ for (var entity in schema) {
168
+ _loop_2(entity);
169
+ }
170
+ return triggers;
171
+ }
172
+ exports.createModiRelatedTriggers = createModiRelatedTriggers;
@@ -1,13 +1,13 @@
1
- import { EntityDef } from "../types/Entity";
2
- import { StorageSchema } from "../types/Storage";
3
- /**
4
- * 判断对象和属性之间的关系
5
- * @param schema
6
- * @param entity
7
- * @param attr
8
- * @param row
9
- * @returns
10
- */
11
- export declare function judgeRelation<ED extends {
12
- [E: string]: EntityDef;
13
- }>(schema: StorageSchema<ED>, entity: keyof ED, attr: string): string | 2 | 1 | string[] | 0;
1
+ import { EntityDef } from "../types/Entity";
2
+ import { StorageSchema } from "../types/Storage";
3
+ /**
4
+ * 判断对象和属性之间的关系
5
+ * @param schema
6
+ * @param entity
7
+ * @param attr
8
+ * @param row
9
+ * @returns
10
+ */
11
+ export declare function judgeRelation<ED extends {
12
+ [E: string]: EntityDef;
13
+ }>(schema: StorageSchema<ED>, entity: keyof ED, attr: string): string | 2 | 1 | string[] | 0;
@@ -1,64 +1,64 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.judgeRelation = void 0;
4
- var tslib_1 = require("tslib");
5
- var assert_1 = tslib_1.__importDefault(require("assert"));
6
- var Demand_1 = require("../types/Demand");
7
- var Entity_1 = require("../types/Entity");
8
- /**
9
- * 判断对象和属性之间的关系
10
- * @param schema
11
- * @param entity
12
- * @param attr
13
- * @param row
14
- * @returns
15
- */
16
- function judgeRelation(schema, entity, attr) {
17
- var _a = schema, _b = entity, attributes = _a[_b].attributes;
18
- if (attr.startsWith(Demand_1.EXPRESSION_PREFIX) || attr.startsWith('#')) {
19
- // 表达式属性或者metadata
20
- return 0;
21
- }
22
- if (attributes.hasOwnProperty(attr) || Entity_1.initinctiveAttributes.includes(attr)) {
23
- // 原生属性
24
- return 1;
25
- }
26
- if (attr.includes('$')) {
27
- var entity2 = attr.slice(0, attr.indexOf('$'));
28
- (0, assert_1.default)(schema.hasOwnProperty(entity2));
29
- var foreignKey = attr.slice(attr.indexOf('$') + 1);
30
- var _c = schema, _d = entity2, attributes2 = _c[_d].attributes;
31
- if (foreignKey === 'entity') {
32
- // 基于反指对象的反向关联
33
- return [entity2];
34
- }
35
- else if (attributes2.hasOwnProperty("".concat(foreignKey, "Id"))
36
- && attributes2["".concat(foreignKey, "Id")].type === 'ref'
37
- && attributes2["".concat(foreignKey, "Id")].ref === entity) {
38
- // 基于外键的反向关联
39
- return [entity2, "".concat(foreignKey, "Id")];
40
- }
41
- else {
42
- // 这种情况应该不会跑到
43
- (0, assert_1.default)(false);
44
- }
45
- }
46
- else if ((attributes.hasOwnProperty("".concat(attr, "Id")))) {
47
- var _e = attributes["".concat(attr, "Id")], type = _e.type, ref = _e.ref;
48
- if (type === 'ref') {
49
- return ref;
50
- }
51
- return 1;
52
- }
53
- else if (attributes.hasOwnProperty('entity')
54
- && attributes.hasOwnProperty('entityId')
55
- && schema.hasOwnProperty(attr)) {
56
- // 反向指针的外键
57
- return 2;
58
- }
59
- else {
60
- (0, assert_1.default)(Entity_1.initinctiveAttributes.includes(attr), "".concat(attr, "\u5C5E\u6027\u627E\u4E0D\u5230"));
61
- return 1;
62
- }
63
- }
64
- exports.judgeRelation = judgeRelation;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.judgeRelation = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var assert_1 = tslib_1.__importDefault(require("assert"));
6
+ var Demand_1 = require("../types/Demand");
7
+ var Entity_1 = require("../types/Entity");
8
+ /**
9
+ * 判断对象和属性之间的关系
10
+ * @param schema
11
+ * @param entity
12
+ * @param attr
13
+ * @param row
14
+ * @returns
15
+ */
16
+ function judgeRelation(schema, entity, attr) {
17
+ var _a = schema, _b = entity, attributes = _a[_b].attributes;
18
+ if (attr.startsWith(Demand_1.EXPRESSION_PREFIX) || attr.startsWith('#')) {
19
+ // 表达式属性或者metadata
20
+ return 0;
21
+ }
22
+ if (attributes.hasOwnProperty(attr) || Entity_1.initinctiveAttributes.includes(attr)) {
23
+ // 原生属性
24
+ return 1;
25
+ }
26
+ if (attr.includes('$')) {
27
+ var entity2 = attr.slice(0, attr.indexOf('$'));
28
+ (0, assert_1.default)(schema.hasOwnProperty(entity2));
29
+ var foreignKey = attr.slice(attr.indexOf('$') + 1);
30
+ var _c = schema, _d = entity2, attributes2 = _c[_d].attributes;
31
+ if (foreignKey === 'entity') {
32
+ // 基于反指对象的反向关联
33
+ return [entity2];
34
+ }
35
+ else if (attributes2.hasOwnProperty("".concat(foreignKey, "Id"))
36
+ && attributes2["".concat(foreignKey, "Id")].type === 'ref'
37
+ && attributes2["".concat(foreignKey, "Id")].ref === entity) {
38
+ // 基于外键的反向关联
39
+ return [entity2, "".concat(foreignKey, "Id")];
40
+ }
41
+ else {
42
+ // 这种情况应该不会跑到
43
+ (0, assert_1.default)(false);
44
+ }
45
+ }
46
+ else if ((attributes.hasOwnProperty("".concat(attr, "Id")))) {
47
+ var _e = attributes["".concat(attr, "Id")], type = _e.type, ref = _e.ref;
48
+ if (type === 'ref') {
49
+ return ref;
50
+ }
51
+ return 1;
52
+ }
53
+ else if (attributes.hasOwnProperty('entity')
54
+ && attributes.hasOwnProperty('entityId')
55
+ && schema.hasOwnProperty(attr)) {
56
+ // 反向指针的外键
57
+ return 2;
58
+ }
59
+ else {
60
+ (0, assert_1.default)(Entity_1.initinctiveAttributes.includes(attr), "".concat(attr, "\u5C5E\u6027\u627E\u4E0D\u5230"));
61
+ return 1;
62
+ }
63
+ }
64
+ exports.judgeRelation = judgeRelation;
@@ -1,7 +1,7 @@
1
- import { StorageSchema } from '../types';
2
- import { EntityDict } from '../types/Entity';
3
- /**
4
- * 对selection进行一些完善,避免编程人员的疏漏
5
- * @param selection
6
- */
7
- export declare function reinforceSelection<ED extends EntityDict>(schema: StorageSchema<ED>, entity: keyof ED, selection: ED[keyof ED]['Selection']): void;
1
+ import { StorageSchema } from '../types';
2
+ import { EntityDict } from '../types/Entity';
3
+ /**
4
+ * 对selection进行一些完善,避免编程人员的疏漏
5
+ * @param selection
6
+ */
7
+ export declare function reinforceSelection<ED extends EntityDict>(schema: StorageSchema<ED>, entity: keyof ED, selection: ED[keyof ED]['Selection']): void;