oak-domain 1.0.0 → 1.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.
- package/lib/OakError.js +2 -16
- package/lib/actions/action.d.ts +9 -1
- package/lib/actions/action.js +6 -2
- package/lib/base-app-domain/ActionDefDict.d.ts +5 -0
- package/lib/base-app-domain/ActionDefDict.js +7 -0
- package/lib/base-app-domain/EntityDict.d.ts +12 -0
- package/lib/base-app-domain/EntityDict.js +2 -0
- package/lib/base-app-domain/Modi/Action.d.ts +10 -0
- package/lib/base-app-domain/Modi/Action.js +14 -0
- package/lib/base-app-domain/Modi/Schema.d.ts +161 -0
- package/lib/base-app-domain/Modi/Schema.js +2 -0
- package/lib/base-app-domain/Modi/Storage.d.ts +3 -0
- package/lib/base-app-domain/Modi/Storage.js +60 -0
- package/lib/base-app-domain/ModiEntity/Schema.d.ts +179 -0
- package/lib/base-app-domain/ModiEntity/Schema.js +2 -0
- package/lib/base-app-domain/ModiEntity/Storage.d.ts +3 -0
- package/lib/base-app-domain/ModiEntity/Storage.js +26 -0
- package/lib/base-app-domain/Oper/Schema.d.ts +158 -0
- package/lib/base-app-domain/Oper/Schema.js +2 -0
- package/lib/base-app-domain/Oper/Storage.d.ts +3 -0
- package/lib/base-app-domain/Oper/Storage.js +29 -0
- package/lib/base-app-domain/OperEntity/Schema.d.ts +196 -0
- package/lib/base-app-domain/OperEntity/Schema.js +2 -0
- package/lib/base-app-domain/OperEntity/Storage.d.ts +3 -0
- package/lib/base-app-domain/OperEntity/Storage.js +26 -0
- package/lib/base-app-domain/Storage.d.ts +3 -0
- package/lib/base-app-domain/Storage.js +15 -0
- package/lib/base-app-domain/User/Schema.d.ts +140 -0
- package/lib/base-app-domain/User/Schema.js +2 -0
- package/lib/base-app-domain/User/Storage.d.ts +3 -0
- package/lib/base-app-domain/User/Storage.js +25 -0
- package/lib/base-app-domain/_SubQuery.d.ts +36 -0
- package/lib/base-app-domain/_SubQuery.js +2 -0
- package/lib/base-app-domain/index.d.ts +3 -0
- package/lib/base-app-domain/index.js +6 -0
- package/lib/checkers/index.d.ts +3 -0
- package/lib/checkers/index.js +8 -0
- package/lib/compiler/env.d.ts +4 -3
- package/lib/compiler/env.js +22 -9
- package/lib/compiler/schemalBuilder.js +689 -355
- package/lib/entities/Action.d.ts +12 -0
- package/lib/entities/Action.js +17 -0
- package/lib/entities/Modi.d.ts +11 -0
- package/lib/entities/Modi.js +46 -0
- package/lib/entities/ModiEntity.d.ts +8 -0
- package/lib/entities/ModiEntity.js +15 -0
- package/lib/entities/Ooperation.d.ts +12 -0
- package/lib/entities/Ooperation.js +17 -0
- package/lib/entities/Oper.d.ts +10 -0
- package/lib/entities/Oper.js +17 -0
- package/lib/entities/OperEntity.d.ts +8 -0
- package/lib/entities/OperEntity.js +15 -0
- package/lib/entities/Update.d.ts +9 -0
- package/lib/entities/Update.js +44 -0
- package/lib/entities/User.d.ts +7 -0
- package/lib/entities/User.js +12 -0
- package/lib/entities/Uupdate.d.ts +9 -0
- package/lib/entities/Uupdate.js +44 -0
- package/lib/store/CascadeStore.d.ts +31 -6
- package/lib/store/CascadeStore.js +957 -230
- package/lib/store/TriggerExecutor.d.ts +4 -3
- package/lib/store/TriggerExecutor.js +30 -102
- package/lib/store/UniversalContext.d.ts +1 -0
- package/lib/store/UniversalContext.js +10 -59
- package/lib/store/action.d.ts +6 -0
- package/lib/store/action.js +14 -0
- package/lib/store/actionDef.js +14 -47
- package/lib/store/filter.d.ts +6 -0
- package/lib/store/filter.js +60 -29
- package/lib/store/modi.d.ts +11 -0
- package/lib/store/modi.js +143 -0
- package/lib/store/projection.d.ts +7 -0
- package/lib/store/projection.js +211 -0
- package/lib/store/relation.js +6 -6
- package/lib/store/selection.d.ts +7 -0
- package/lib/store/selection.js +227 -0
- package/lib/triggers/index.d.ts +2 -0
- package/lib/triggers/index.js +5 -0
- package/lib/triggers/modi.d.ts +5 -0
- package/lib/triggers/modi.js +72 -0
- package/lib/types/Context.d.ts +1 -0
- package/lib/types/DataType.d.ts +1 -1
- package/lib/types/Entity.d.ts +29 -16
- package/lib/types/Exception.d.ts +28 -0
- package/lib/types/Exception.js +75 -23
- package/lib/types/Expression.d.ts +9 -0
- package/lib/types/Expression.js +47 -38
- package/lib/types/RowStore.d.ts +3 -3
- package/lib/types/Storage.d.ts +6 -0
- package/lib/types/Trigger.d.ts +5 -5
- package/lib/types/index.js +19 -28
- package/lib/utils/SimpleConnector.js +5 -58
- package/lib/utils/assert.js +2 -4
- package/lib/utils/concurrent.js +5 -54
- package/lib/utils/lodash.d.ts +4 -1
- package/lib/utils/lodash.js +19 -15
- package/package.json +10 -5
- package/src/entities/Modi.ts +68 -0
- package/src/entities/ModiEntity.ts +24 -0
- package/src/entities/Oper.ts +28 -0
- package/src/entities/OperEntity.ts +24 -0
- package/src/entities/User.ts +20 -0
|
@@ -1,70 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
22
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
23
|
-
if (!m) return o;
|
|
24
|
-
var i = m.call(o), r, ar = [], e;
|
|
25
|
-
try {
|
|
26
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
27
|
-
}
|
|
28
|
-
catch (error) { e = { error: error }; }
|
|
29
|
-
finally {
|
|
30
|
-
try {
|
|
31
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
32
|
-
}
|
|
33
|
-
finally { if (e) throw e.error; }
|
|
34
|
-
}
|
|
35
|
-
return ar;
|
|
36
|
-
};
|
|
37
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
38
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
39
|
-
if (ar || !(i in from)) {
|
|
40
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
41
|
-
ar[i] = from[i];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
|
-
};
|
|
46
|
-
var __values = (this && this.__values) || function(o) {
|
|
47
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
48
|
-
if (m) return m.call(o);
|
|
49
|
-
if (o && typeof o.length === "number") return {
|
|
50
|
-
next: function () {
|
|
51
|
-
if (o && i >= o.length) o = void 0;
|
|
52
|
-
return { value: o && o[i++], done: !o };
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
56
|
-
};
|
|
57
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
58
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
59
|
-
};
|
|
60
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
3
|
exports.buildSchema = exports.analyzeEntities = void 0;
|
|
62
|
-
var
|
|
63
|
-
var
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var path_1 = tslib_1.__importDefault(require("path"));
|
|
6
|
+
var assert_1 = tslib_1.__importDefault(require("assert"));
|
|
64
7
|
var fs_1 = require("fs");
|
|
65
8
|
var fs_extra_1 = require("fs-extra");
|
|
66
9
|
var lodash_1 = require("lodash");
|
|
67
|
-
var ts = __importStar(require("typescript"));
|
|
10
|
+
var ts = tslib_1.__importStar(require("typescript"));
|
|
68
11
|
var factory = ts.factory;
|
|
69
12
|
var env_1 = require("./env");
|
|
70
13
|
var string_1 = require("../utils/string");
|
|
@@ -75,7 +18,13 @@ var ReversePointerEntities = {};
|
|
|
75
18
|
var ReversePointerRelations = {};
|
|
76
19
|
var ActionImportStatements = function () { return [
|
|
77
20
|
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("ActionDef"))])), factory.createStringLiteral("".concat((0, env_1.TYPE_PATH_IN_OAK_DOMAIN)(), "Action")), undefined),
|
|
78
|
-
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
21
|
+
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
22
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("GenericAction")),
|
|
23
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("AppendOnlyAction")),
|
|
24
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("ReadOnlyAction")),
|
|
25
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("ExcludeUpdateAction")),
|
|
26
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("ExcludeRemoveAction")),
|
|
27
|
+
])), factory.createStringLiteral((0, env_1.ACTION_CONSTANT_IN_OAK_DOMAIN)()), undefined)
|
|
79
28
|
]; };
|
|
80
29
|
var ActionAsts = {};
|
|
81
30
|
var SchemaAsts = {};
|
|
@@ -151,7 +100,7 @@ function pushStatementIntoActionAst(moduleName, node, sourceFile) {
|
|
|
151
100
|
else {
|
|
152
101
|
(0, lodash_1.assign)(ActionAsts, (_a = {},
|
|
153
102
|
_a[moduleName] = {
|
|
154
|
-
statements: __spreadArray(__spreadArray([], __read(ActionImportStatements()), false), [node], false),
|
|
103
|
+
statements: tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(ActionImportStatements()), false), [node], false),
|
|
155
104
|
sourceFile: sourceFile,
|
|
156
105
|
importedFrom: {},
|
|
157
106
|
// actionNames,
|
|
@@ -184,7 +133,7 @@ function checkActionDefNameConsistent(filename, actionDefNode) {
|
|
|
184
133
|
(0, assert_1.default)(ts.isTypeReferenceNode(type));
|
|
185
134
|
var typeArguments = type.typeArguments;
|
|
186
135
|
(0, assert_1.default)(typeArguments.length === 2);
|
|
187
|
-
var _a = __read(typeArguments, 2), actionNode = _a[0], stateNode = _a[1];
|
|
136
|
+
var _a = tslib_1.__read(typeArguments, 2), actionNode = _a[0], stateNode = _a[1];
|
|
188
137
|
(0, assert_1.default)(ts.isIdentifier(name), "\u6587\u4EF6".concat(filename, "\u4E2D\u7684ActionDef").concat(name.text, "\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u53D8\u91CF"));
|
|
189
138
|
(0, assert_1.default)(name.text.endsWith('ActionDef'), "\u6587\u4EF6".concat(filename, "\u4E2D\u7684ActionDef").concat(name.text, "\u672A\u4EE5ActionDef\u7ED3\u5C3E"));
|
|
190
139
|
(0, assert_1.default)(ts.isTypeReferenceNode(actionNode) && ts.isTypeReferenceNode(stateNode), "\u6587\u4EF6".concat(filename, "\u4E2D\u7684ActionDef").concat(name.text, "\u7C7B\u578B\u58F0\u660E\u4E2D\u7684action\u548Cstate\u975E\u6CD5"));
|
|
@@ -252,11 +201,18 @@ function getStringTextFromUnionStringLiterals(moduleName, filename, node, progra
|
|
|
252
201
|
return [action];
|
|
253
202
|
}
|
|
254
203
|
}
|
|
255
|
-
var RESERVED_ACTION_NAMES = ['GenericAction', 'ParticularAction'];
|
|
204
|
+
var RESERVED_ACTION_NAMES = ['GenericAction', 'ParticularAction', 'ExcludeRemoveAction', 'ExcludeUpdateAction', 'ReadOnlyAction', 'AppendOnlyAction'];
|
|
256
205
|
var action_1 = require("../actions/action");
|
|
257
206
|
var DataType_1 = require("../types/DataType");
|
|
258
207
|
var Entity_1 = require("../types/Entity");
|
|
259
|
-
|
|
208
|
+
var OriginActionDict = {
|
|
209
|
+
'crud': 'GenericAction',
|
|
210
|
+
'excludeUpdate': 'ExcludeUpdateAction',
|
|
211
|
+
'excludeRemove': 'ExcludeRemoveAction',
|
|
212
|
+
'appendOnly': 'AppendOnlyAction',
|
|
213
|
+
'readOnly': 'ReadOnlyAction',
|
|
214
|
+
};
|
|
215
|
+
function dealWithActions(moduleName, filename, node, program, sourceFile) {
|
|
260
216
|
var actionTexts = action_1.genericActions.map(function (ele) { return ele; });
|
|
261
217
|
if (ts.isUnionTypeNode(node)) {
|
|
262
218
|
var actionNames = node.types.map(function (ele) {
|
|
@@ -267,7 +223,7 @@ function dealWithActions(moduleName, filename, node, program) {
|
|
|
267
223
|
(0, assert_1.default)((0, lodash_1.intersection)(actionNames, env_1.RESERVED_ENTITIES).length === 0, "".concat(filename, "\u4E2D\u7684Action\u547D\u540D\u4E0D\u80FD\u662F\u300C").concat(RESERVED_ACTION_NAMES.join(','), "\u300D\u4E4B\u4E00"));
|
|
268
224
|
node.types.forEach(function (ele) {
|
|
269
225
|
if (ts.isTypeReferenceNode(ele)) {
|
|
270
|
-
actionTexts.push.apply(actionTexts, __spreadArray([], __read(getStringTextFromUnionStringLiterals(moduleName, filename, ele, program)), false));
|
|
226
|
+
actionTexts.push.apply(actionTexts, tslib_1.__spreadArray([], tslib_1.__read(getStringTextFromUnionStringLiterals(moduleName, filename, ele, program)), false));
|
|
271
227
|
}
|
|
272
228
|
else {
|
|
273
229
|
(0, assert_1.default)(ts.isLiteralTypeNode(ele) && ts.isStringLiteral(ele.literal), "\u3010".concat(moduleName, "\u3011action\u7684\u5B9A\u4E49\u65E2\u975EType\u4E5F\u4E0D\u662Fstring"));
|
|
@@ -279,7 +235,7 @@ function dealWithActions(moduleName, filename, node, program) {
|
|
|
279
235
|
if (ts.isIdentifier(node.typeName)) {
|
|
280
236
|
(0, assert_1.default)(!RESERVED_ACTION_NAMES.includes(node.typeName.text), "".concat(filename, "\u4E2D\u7684Action\u547D\u540D\u4E0D\u80FD\u662F\u300C").concat(RESERVED_ACTION_NAMES.join(','), "\u300D\u4E4B\u4E00"));
|
|
281
237
|
}
|
|
282
|
-
actionTexts.push.apply(actionTexts, __spreadArray([], __read(getStringTextFromUnionStringLiterals(moduleName, filename, node, program)), false));
|
|
238
|
+
actionTexts.push.apply(actionTexts, tslib_1.__spreadArray([], tslib_1.__read(getStringTextFromUnionStringLiterals(moduleName, filename, node, program)), false));
|
|
283
239
|
}
|
|
284
240
|
else {
|
|
285
241
|
(0, assert_1.default)(ts.isLiteralTypeNode(node) && ts.isStringLiteral(node.literal), "\u3010".concat(moduleName, "\u3011action\u7684\u5B9A\u4E49\u65E2\u975EType\u4E5F\u4E0D\u662Fstring"));
|
|
@@ -290,6 +246,7 @@ function dealWithActions(moduleName, filename, node, program) {
|
|
|
290
246
|
actionTexts.forEach(function (action) {
|
|
291
247
|
var _a;
|
|
292
248
|
(0, assert_1.default)(action.length <= env_1.STRING_LITERAL_MAX_LENGTH, "".concat(filename, "\u4E2D\u7684Action\u300C").concat(action, "\u300D\u547D\u540D\u957F\u5EA6\u5927\u4E8E").concat(env_1.STRING_LITERAL_MAX_LENGTH));
|
|
249
|
+
(0, assert_1.default)(/^[a-z][a-z|A-Z]+$/.test(action), "".concat(filename, "\u4E2D\u7684Action\u300C").concat(action, "\u300D\u547D\u540D\u4E0D\u5408\u6CD5\uFF0C\u5FC5\u987B\u4EE5\u5C0F\u5B57\u5B57\u6BCD\u5F00\u5934\u4E14\u53EA\u80FD\u5305\u542B\u5B57\u6BCD"));
|
|
293
250
|
if (ActionDict.hasOwnProperty(action)) {
|
|
294
251
|
throw new Error("\u6587\u4EF6".concat(filename, "\u4E2D\uFF0CAction\u5B9A\u4E49\u4E0A\u7684\u3010").concat(action, "\u3011\u52A8\u4F5C\u5B58\u5728\u540C\u540D"));
|
|
295
252
|
}
|
|
@@ -299,8 +256,7 @@ function dealWithActions(moduleName, filename, node, program) {
|
|
|
299
256
|
_a));
|
|
300
257
|
}
|
|
301
258
|
});
|
|
302
|
-
|
|
303
|
-
// 放到actionDef的定义处去做。by Xc
|
|
259
|
+
pushStatementIntoActionAst(moduleName, factory.createVariableStatement([factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([factory.createVariableDeclaration(factory.createIdentifier("actions"), undefined, undefined, factory.createArrayLiteralExpression(actionTexts.map(function (ele) { return factory.createStringLiteral(ele); }), false))], ts.NodeFlags.Const)), sourceFile);
|
|
304
260
|
}
|
|
305
261
|
function getEntityImported(declaration, filename) {
|
|
306
262
|
var moduleSpecifier = declaration.moduleSpecifier, importClause = declaration.importClause;
|
|
@@ -312,6 +268,9 @@ function getEntityImported(declaration, filename) {
|
|
|
312
268
|
else if (moduleSpecifier.text.startsWith((0, env_1.ENTITY_PATH_IN_OAK_GENERAL_BUSINESS)())) {
|
|
313
269
|
entityImported = moduleSpecifier.text.slice((0, env_1.ENTITY_PATH_IN_OAK_GENERAL_BUSINESS)().length);
|
|
314
270
|
}
|
|
271
|
+
else if (moduleSpecifier.text.startsWith((0, env_1.ENTITY_PATH_IN_OAK_DOMAIN)())) {
|
|
272
|
+
entityImported = moduleSpecifier.text.slice((0, env_1.ENTITY_PATH_IN_OAK_DOMAIN)().length);
|
|
273
|
+
}
|
|
315
274
|
}
|
|
316
275
|
if (entityImported) {
|
|
317
276
|
var namedBindings = importClause.namedBindings;
|
|
@@ -354,6 +313,11 @@ function analyzeEntity(filename, path, program) {
|
|
|
354
313
|
var fullPath = "".concat(path, "/").concat(filename);
|
|
355
314
|
var sourceFile = program.getSourceFile(fullPath);
|
|
356
315
|
var moduleName = filename.split('.')[0];
|
|
316
|
+
if (Schema.hasOwnProperty(moduleName)) {
|
|
317
|
+
if (!path.includes('oak-general-business')) {
|
|
318
|
+
console.log("\u51FA\u73B0\u4E86\u540C\u540D\u7684Entity\u5B9A\u4E49\u300C".concat(moduleName, "\u300D\uFF0C\u5C06\u4F7F\u7528\u60A8\u6240\u5B9A\u4E49\u7684\u5BF9\u8C61\u7ED3\u6784\u53D6\u4EE3\u6389\u9ED8\u8BA4\u5BF9\u8C61\uFF0C\u8BF7\u786E\u8BA4"));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
357
321
|
var referencedSchemas = [];
|
|
358
322
|
var schemaAttrs = [];
|
|
359
323
|
var hasFulltextIndex = false;
|
|
@@ -361,13 +325,16 @@ function analyzeEntity(filename, path, program) {
|
|
|
361
325
|
var beforeSchema = true;
|
|
362
326
|
var hasActionDef = false;
|
|
363
327
|
var hasRelationDef = false;
|
|
364
|
-
var
|
|
328
|
+
var hasActionOrStateDef = false;
|
|
329
|
+
var toModi = false;
|
|
330
|
+
var actionType = 'crud';
|
|
331
|
+
var _static = false;
|
|
365
332
|
var enumStringAttrs = [];
|
|
366
333
|
var states = [];
|
|
367
334
|
var localEnumStringTypes = [];
|
|
368
335
|
var localeDef = undefined;
|
|
369
336
|
ts.forEachChild(sourceFile, function (node) {
|
|
370
|
-
var _a, _b;
|
|
337
|
+
var _a, _b, _c, _d;
|
|
371
338
|
if (ts.isImportDeclaration(node)) {
|
|
372
339
|
var entityImported = getEntityImported(node, filename);
|
|
373
340
|
if (entityImported) {
|
|
@@ -383,8 +350,8 @@ function analyzeEntity(filename, path, program) {
|
|
|
383
350
|
var members = node.members, heritageClauses = node.heritageClauses;
|
|
384
351
|
(0, assert_1.default)(['EntityShape', 'FileCarrierEntityShape'].includes(heritageClauses[0].types[0].expression.text));
|
|
385
352
|
members.forEach(function (attrNode) {
|
|
386
|
-
var _a;
|
|
387
|
-
var
|
|
353
|
+
var _a, _b;
|
|
354
|
+
var _c = attrNode, type = _c.type, name = _c.name, questionToken = _c.questionToken;
|
|
388
355
|
var attrName = name.text;
|
|
389
356
|
if (ts.isTypeReferenceNode(type)
|
|
390
357
|
&& ts.isIdentifier(type.typeName)) {
|
|
@@ -408,6 +375,9 @@ function analyzeEntity(filename, path, program) {
|
|
|
408
375
|
_a[reverseEntity] = [moduleName],
|
|
409
376
|
_a));
|
|
410
377
|
}
|
|
378
|
+
if (reverseEntity === 'Modi') {
|
|
379
|
+
toModi = true;
|
|
380
|
+
}
|
|
411
381
|
}
|
|
412
382
|
else {
|
|
413
383
|
schemaAttrs.push(attrNode);
|
|
@@ -416,6 +386,27 @@ function analyzeEntity(filename, path, program) {
|
|
|
416
386
|
}
|
|
417
387
|
}
|
|
418
388
|
}
|
|
389
|
+
else if (ts.isArrayTypeNode(type) && ts.isTypeReferenceNode(type.elementType) && ts.isIdentifier(type.elementType.typeName)) {
|
|
390
|
+
var typeName = type.elementType.typeName;
|
|
391
|
+
if (referencedSchemas.includes(typeName.text)) {
|
|
392
|
+
// 这也是一对多的反指定义
|
|
393
|
+
var reverseEntity = typeName.text;
|
|
394
|
+
if (ReversePointerRelations[reverseEntity]) {
|
|
395
|
+
ReversePointerRelations[reverseEntity].push(moduleName);
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
(0, lodash_1.assign)(ReversePointerRelations, (_b = {},
|
|
399
|
+
_b[reverseEntity] = [moduleName],
|
|
400
|
+
_b));
|
|
401
|
+
}
|
|
402
|
+
if (reverseEntity === 'Modi') {
|
|
403
|
+
toModi = true;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
throw new Error("\u5BF9\u8C61".concat(moduleName, "\u4E2D\u5B9A\u4E49\u7684\u5C5E\u6027").concat(attrName, "\u662F\u4E0D\u53EF\u8BC6\u522B\u7684\u6570\u7EC4\u7C7B\u522B"));
|
|
408
|
+
}
|
|
409
|
+
}
|
|
419
410
|
else {
|
|
420
411
|
schemaAttrs.push(attrNode);
|
|
421
412
|
if (ts.isUnionTypeNode(type)) {
|
|
@@ -432,7 +423,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
432
423
|
if (type.typeName.text === 'String'
|
|
433
424
|
&& typeArguments
|
|
434
425
|
&& typeArguments.length === 1) {
|
|
435
|
-
var
|
|
426
|
+
var _d = tslib_1.__read(typeArguments, 1), node_1 = _d[0];
|
|
436
427
|
if (ts.isLiteralTypeNode(node_1) && ts.isNumericLiteral(node_1.literal)) {
|
|
437
428
|
if (parseInt(node_1.literal.text) > 32) {
|
|
438
429
|
console.warn("\u300C\u300D\u4E2Dentity\u5C5E\u6027\u5B9A\u4E49\u7684\u957F\u5EA6\u5927\u4E8E32\uFF0C\u8BF7\u786E\u8BA4\u5B83\u4E0D\u662F\u4E00\u4E2A\u53CD\u6307\u5BF9\u8C61");
|
|
@@ -450,7 +441,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
450
441
|
if (type.typeName.text === 'String'
|
|
451
442
|
&& typeArguments
|
|
452
443
|
&& typeArguments.length === 1) {
|
|
453
|
-
var
|
|
444
|
+
var _e = tslib_1.__read(typeArguments, 1), node_2 = _e[0];
|
|
454
445
|
if (ts.isLiteralTypeNode(node_2) && ts.isNumericLiteral(node_2.literal)) {
|
|
455
446
|
if (parseInt(node_2.literal.text) !== 64) {
|
|
456
447
|
console.warn("\u300C".concat(filename, "\u300D\u4E2DentityId\u5C5E\u6027\u5B9A\u4E49\u7684\u957F\u5EA6\u4E0D\u7B49\u4E8E64\uFF0C\u8BF7\u786E\u8BA4\u5B83\u4E0D\u662F\u4E00\u4E2A\u53CD\u6307\u5BF9\u8C61"));
|
|
@@ -468,6 +459,28 @@ function analyzeEntity(filename, path, program) {
|
|
|
468
459
|
_a));
|
|
469
460
|
}
|
|
470
461
|
beforeSchema = false;
|
|
462
|
+
// 对于不是Oper的对象,全部建立和OperEntity的反指关系
|
|
463
|
+
if (!['Oper', 'OperEntity', 'ModiEntity'].includes(moduleName)) {
|
|
464
|
+
if (ReversePointerRelations['OperEntity'] && !ReversePointerRelations['OperEntity'].includes(moduleName)) {
|
|
465
|
+
ReversePointerRelations['OperEntity'].push(moduleName);
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
(0, lodash_1.assign)(ReversePointerRelations, (_b = {},
|
|
469
|
+
_b['OperEntity'] = [moduleName],
|
|
470
|
+
_b));
|
|
471
|
+
}
|
|
472
|
+
// 对于不是Modi的对象,全部建立和ModiEntity的反指关系
|
|
473
|
+
if (!['Modi'].includes(moduleName) && !toModi) {
|
|
474
|
+
if (ReversePointerRelations['ModiEntity'] && !ReversePointerRelations['ModiEntity'].includes(moduleName)) {
|
|
475
|
+
ReversePointerRelations['ModiEntity'].push(moduleName);
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
(0, lodash_1.assign)(ReversePointerRelations, (_c = {},
|
|
479
|
+
_c['ModiEntity'] = [moduleName],
|
|
480
|
+
_c));
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
471
484
|
}
|
|
472
485
|
else if (beforeSchema) {
|
|
473
486
|
// 本地规定的一些形状定义,直接使用
|
|
@@ -479,17 +492,16 @@ function analyzeEntity(filename, path, program) {
|
|
|
479
492
|
if (node.name.text === 'Action') {
|
|
480
493
|
(0, assert_1.default)(!localeDef, "\u3010".concat(filename, "\u3011locale\u5B9A\u4E49\u987B\u5728Action\u4E4B\u540E"));
|
|
481
494
|
hasActionDef = true;
|
|
482
|
-
hasActionTypeAliasDeclaration = true;
|
|
483
495
|
var modifiers = [factory.createModifier(ts.SyntaxKind.ExportKeyword)];
|
|
484
496
|
pushStatementIntoActionAst(moduleName, factory.updateTypeAliasDeclaration(node, node.decorators, modifiers, factory.createIdentifier('ParticularAction'), node.typeParameters, node.type), sourceFile);
|
|
485
497
|
pushStatementIntoActionAst(moduleName, factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("Action"), undefined, factory.createUnionTypeNode([
|
|
486
|
-
factory.createTypeReferenceNode(
|
|
487
|
-
factory.createTypeReferenceNode(
|
|
498
|
+
factory.createTypeReferenceNode(OriginActionDict[actionType], undefined),
|
|
499
|
+
factory.createTypeReferenceNode('ParticularAction', undefined)
|
|
488
500
|
])), sourceFile);
|
|
489
|
-
dealWithActions(moduleName, filename, node.type, program);
|
|
501
|
+
dealWithActions(moduleName, filename, node.type, program, sourceFile);
|
|
490
502
|
}
|
|
491
503
|
else if (node.name.text === 'Relation') {
|
|
492
|
-
(0, assert_1.default)(!localeDef, "\u3010".concat(filename, "\u3011locale\u5B9A\u4E49\u987B\
|
|
504
|
+
(0, assert_1.default)(!localeDef, "\u3010".concat(filename, "\u3011locale\u5B9A\u4E49\u987B\u5728Relation\u4E4B\u540E"));
|
|
493
505
|
// 增加userXXX对象的描述
|
|
494
506
|
if (ts.isLiteralTypeNode(node.type)) {
|
|
495
507
|
(0, assert_1.default)(ts.isStringLiteral(node.type.literal));
|
|
@@ -509,18 +521,20 @@ function analyzeEntity(filename, path, program) {
|
|
|
509
521
|
factory.createPropertySignature(undefined, factory.createIdentifier(entityLc), undefined, factory.createTypeReferenceNode(factory.createIdentifier(moduleName), undefined)),
|
|
510
522
|
factory.createPropertySignature(undefined, factory.createIdentifier('relation'), undefined, node.type),
|
|
511
523
|
];
|
|
512
|
-
(0, lodash_1.assign)(Schema, (
|
|
513
|
-
|
|
524
|
+
(0, lodash_1.assign)(Schema, (_d = {},
|
|
525
|
+
_d[relationEntityName] = {
|
|
514
526
|
schemaAttrs: relationSchemaAttrs,
|
|
515
527
|
sourceFile: sourceFile,
|
|
528
|
+
actionType: 'excludeUpdate',
|
|
516
529
|
},
|
|
517
|
-
|
|
530
|
+
_d));
|
|
518
531
|
addRelationship(relationEntityName, 'User', 'user', true);
|
|
519
532
|
addRelationship(relationEntityName, moduleName, entityLc, true);
|
|
520
533
|
hasRelationDef = true;
|
|
521
534
|
}
|
|
522
535
|
else if (node.name.text.endsWith('Action') || node.name.text.endsWith('State')) {
|
|
523
536
|
(0, assert_1.default)(!localeDef, "\u3010".concat(filename, "\u3011locale\u5B9A\u4E49\u987B\u5728Action/State\u4E4B\u540E"));
|
|
537
|
+
hasActionOrStateDef = true;
|
|
524
538
|
pushStatementIntoActionAst(moduleName, factory.updateTypeAliasDeclaration(node, node.decorators, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], node.name, node.typeParameters, node.type), sourceFile);
|
|
525
539
|
}
|
|
526
540
|
else if (beforeSchema) {
|
|
@@ -541,7 +555,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
541
555
|
checkActionDefNameConsistent(filename, declaration);
|
|
542
556
|
var typeArguments = declaration.type.typeArguments;
|
|
543
557
|
(0, assert_1.default)(typeArguments.length === 2);
|
|
544
|
-
var _a = __read(typeArguments, 2), actionNode = _a[0], stateNode = _a[1];
|
|
558
|
+
var _a = tslib_1.__read(typeArguments, 2), actionNode = _a[0], stateNode = _a[1];
|
|
545
559
|
var checker = program.getTypeChecker();
|
|
546
560
|
var symbol = checker.getSymbolAtLocation(actionNode.typeName);
|
|
547
561
|
var declaration2_1 = symbol.getDeclarations()[0];
|
|
@@ -660,7 +674,7 @@ function analyzeEntity(filename, path, program) {
|
|
|
660
674
|
var text = typeName.text;
|
|
661
675
|
var text2_1 = text === 'Schema' ? entity : text;
|
|
662
676
|
var manyToOneItem = manyToOneSet && manyToOneSet.find(function (_a) {
|
|
663
|
-
var _b = __read(_a, 2), refEntity = _b[0], attrName = _b[1];
|
|
677
|
+
var _b = tslib_1.__read(_a, 2), refEntity = _b[0], attrName = _b[1];
|
|
664
678
|
return refEntity === text2_1 && attrName === name_1.text;
|
|
665
679
|
});
|
|
666
680
|
if (!manyToOneItem) {
|
|
@@ -689,11 +703,10 @@ function analyzeEntity(filename, path, program) {
|
|
|
689
703
|
});
|
|
690
704
|
indexes = declaration.initializer;
|
|
691
705
|
}
|
|
692
|
-
else if (ts.isIdentifier(declaration.
|
|
706
|
+
else if (ts.isTypeReferenceNode(declaration.type) && ts.isIdentifier(declaration.type.typeName) && declaration.type.typeName.text === 'LocaleDef') {
|
|
693
707
|
// locale定义
|
|
694
708
|
var type = declaration.type, initializer = declaration.initializer;
|
|
695
709
|
(0, assert_1.default)(ts.isObjectLiteralExpression(initializer));
|
|
696
|
-
(0, assert_1.default)(ts.isTypeReferenceNode(type) && ts.isIdentifier(type.typeName) && type.typeName.text === 'LocaleDef', 'locale定义的类型必须是LocaleDef');
|
|
697
710
|
var properties = initializer.properties;
|
|
698
711
|
(0, assert_1.default)(properties.length > 0, "".concat(filename, "\u81F3\u5C11\u9700\u8981\u6709\u4E00\u79CDlocale\u5B9A\u4E49"));
|
|
699
712
|
var allEnumStringAttrs = enumStringAttrs.concat(states);
|
|
@@ -738,19 +751,38 @@ function analyzeEntity(filename, path, program) {
|
|
|
738
751
|
}
|
|
739
752
|
localeDef = initializer;
|
|
740
753
|
}
|
|
754
|
+
else if (ts.isTypeReferenceNode(declaration.type) && ts.isIdentifier(declaration.type.typeName) && declaration.type.typeName.text === 'Configuration') {
|
|
755
|
+
(0, assert_1.default)(!hasActionDef, "".concat(moduleName, "\u4E2D\u7684Configuration\u5B9A\u4E49\u5728Action\u4E4B\u540E"));
|
|
756
|
+
(0, assert_1.default)(ts.isObjectLiteralExpression(declaration.initializer));
|
|
757
|
+
var properties = declaration.initializer.properties;
|
|
758
|
+
var atProperty = properties.find(function (ele) { return ts.isPropertyAssignment(ele) && ts.isIdentifier(ele.name) && ele.name.text === 'actionType'; });
|
|
759
|
+
var staticProperty = properties.find(function (ele) { return ts.isPropertyAssignment(ele) && ts.isIdentifier(ele.name) && ele.name.text === 'static'; });
|
|
760
|
+
if (atProperty) {
|
|
761
|
+
actionType = atProperty.initializer.text;
|
|
762
|
+
}
|
|
763
|
+
if (staticProperty) {
|
|
764
|
+
_static = true; // static如果有值只能为true
|
|
765
|
+
}
|
|
766
|
+
}
|
|
741
767
|
else {
|
|
742
|
-
throw new Error("\u4E0D\u80FD\u7406\u89E3\u7684\u5B9A\u4E49\u5185\u5BB9".concat(declaration.name.getText()));
|
|
768
|
+
throw new Error("".concat(moduleName, "\uFF1A\u4E0D\u80FD\u7406\u89E3\u7684\u5B9A\u4E49\u5185\u5BB9").concat(declaration.name.getText()));
|
|
743
769
|
}
|
|
744
770
|
});
|
|
745
771
|
}
|
|
746
772
|
});
|
|
747
|
-
if (hasActionDef &&
|
|
748
|
-
throw new Error("".concat(filename, "\u4E2D\u6709Action\u5B9A\u4E49\uFF0C\u4F46\u6CA1\u6709\u5B9A\u4E49\
|
|
773
|
+
if (!hasActionDef && hasActionOrStateDef) {
|
|
774
|
+
throw new Error("".concat(filename, "\u4E2D\u6709Action\u6216State\u5B9A\u4E49\uFF0C\u4F46\u6CA1\u6709\u5B9A\u4E49\u5B8C\u6574\u7684Action\u7C7B\u578B"));
|
|
775
|
+
}
|
|
776
|
+
if (hasActionDef && actionType !== 'crud') {
|
|
777
|
+
throw new Error("".concat(filename, "\u4E2D\u6709Action\u5B9A\u4E49\uFF0C\u4F46\u5374\u5B9A\u4E49\u4E86actionType\u4E0D\u662Fcrud"));
|
|
749
778
|
}
|
|
750
|
-
(0, assert_1.default)(schemaAttrs.length > 0);
|
|
779
|
+
(0, assert_1.default)(schemaAttrs.length > 0, "\u5BF9\u8C61".concat(moduleName, "\u6CA1\u6709\u4EFB\u4F55\u5C5E\u6027\u5B9A\u4E49"));
|
|
751
780
|
var schema = {
|
|
752
781
|
schemaAttrs: schemaAttrs,
|
|
753
782
|
sourceFile: sourceFile,
|
|
783
|
+
toModi: toModi,
|
|
784
|
+
actionType: actionType,
|
|
785
|
+
static: _static,
|
|
754
786
|
};
|
|
755
787
|
if (hasFulltextIndex) {
|
|
756
788
|
(0, lodash_1.assign)(schema, {
|
|
@@ -809,7 +841,7 @@ function constructSchema(statements, entity) {
|
|
|
809
841
|
var text = typeName.text;
|
|
810
842
|
var text2_2 = text === 'Schema' ? entity : text;
|
|
811
843
|
var manyToOneItem = manyToOneSet && manyToOneSet.find(function (_a) {
|
|
812
|
-
var _b = __read(_a, 2), refEntity = _b[0], attrName = _b[1];
|
|
844
|
+
var _b = tslib_1.__read(_a, 2), refEntity = _b[0], attrName = _b[1];
|
|
813
845
|
return refEntity === text2_2 && attrName === attrName;
|
|
814
846
|
});
|
|
815
847
|
if (manyToOneItem) {
|
|
@@ -864,7 +896,7 @@ function constructSchema(statements, entity) {
|
|
|
864
896
|
}
|
|
865
897
|
};
|
|
866
898
|
try {
|
|
867
|
-
for (var schemaAttrs_1 = __values(schemaAttrs), schemaAttrs_1_1 = schemaAttrs_1.next(); !schemaAttrs_1_1.done; schemaAttrs_1_1 = schemaAttrs_1.next()) {
|
|
899
|
+
for (var schemaAttrs_1 = tslib_1.__values(schemaAttrs), schemaAttrs_1_1 = schemaAttrs_1.next(); !schemaAttrs_1_1.done; schemaAttrs_1_1 = schemaAttrs_1.next()) {
|
|
868
900
|
var attr = schemaAttrs_1_1.value;
|
|
869
901
|
_loop_1(attr);
|
|
870
902
|
}
|
|
@@ -887,9 +919,9 @@ function constructSchema(statements, entity) {
|
|
|
887
919
|
var foreignKeySet = {};
|
|
888
920
|
if (oneToManySet) {
|
|
889
921
|
try {
|
|
890
|
-
for (var oneToManySet_1 = __values(oneToManySet), oneToManySet_1_1 = oneToManySet_1.next(); !oneToManySet_1_1.done; oneToManySet_1_1 = oneToManySet_1.next()) {
|
|
922
|
+
for (var oneToManySet_1 = tslib_1.__values(oneToManySet), oneToManySet_1_1 = oneToManySet_1.next(); !oneToManySet_1_1.done; oneToManySet_1_1 = oneToManySet_1.next()) {
|
|
891
923
|
var oneToManyItem = oneToManySet_1_1.value;
|
|
892
|
-
var _g = __read(oneToManyItem, 2), entityName = _g[0], foreignKey = _g[1];
|
|
924
|
+
var _g = tslib_1.__read(oneToManyItem, 2), entityName = _g[0], foreignKey = _g[1];
|
|
893
925
|
if (referenceEntities.indexOf(entityName) === -1) {
|
|
894
926
|
referenceEntities.push(entityName);
|
|
895
927
|
}
|
|
@@ -926,51 +958,8 @@ function constructSchema(statements, entity) {
|
|
|
926
958
|
});
|
|
927
959
|
// 在这里把需要直接拷贝过来的语句写入
|
|
928
960
|
if (SchemaAsts[entity]) {
|
|
929
|
-
statements.push.apply(statements, __spreadArray([], __read(SchemaAsts[entity].statements), false));
|
|
930
|
-
}
|
|
931
|
-
// if (keys(foreignKeySet).length > 0) {
|
|
932
|
-
// for (const fkItem in foreignKeySet) {
|
|
933
|
-
// const entityLc = fkItem.slice(0, 1).toLowerCase().concat(fkItem.slice(1));
|
|
934
|
-
// const foreignKeys = [];
|
|
935
|
-
// /* statements.push(
|
|
936
|
-
// factory.createTypeAliasDeclaration(
|
|
937
|
-
// undefined,
|
|
938
|
-
// undefined,
|
|
939
|
-
// factory.createIdentifier(`${fkItem}s`),
|
|
940
|
-
// undefined,
|
|
941
|
-
// factory.createTemplateLiteralType(
|
|
942
|
-
// factory.createTemplateHead(
|
|
943
|
-
// `${entityLc}s$`,
|
|
944
|
-
// `${entityLc}s$`
|
|
945
|
-
// ),
|
|
946
|
-
// [factory.createTemplateLiteralTypeSpan(
|
|
947
|
-
// factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
|
|
948
|
-
// factory.createTemplateTail(
|
|
949
|
-
// "",
|
|
950
|
-
// ""
|
|
951
|
-
// )
|
|
952
|
-
// )]
|
|
953
|
-
// )
|
|
954
|
-
// )
|
|
955
|
-
// ); */
|
|
956
|
-
// for (let iter = 1; iter < 11; iter++) {
|
|
957
|
-
// foreignKeys.push(`${entityLc}s$${iter}`);
|
|
958
|
-
// }
|
|
959
|
-
// statements.push(
|
|
960
|
-
// factory.createTypeAliasDeclaration(
|
|
961
|
-
// undefined,
|
|
962
|
-
// undefined,
|
|
963
|
-
// factory.createIdentifier(`${fkItem}s`),
|
|
964
|
-
// undefined,
|
|
965
|
-
// factory.createUnionTypeNode(
|
|
966
|
-
// foreignKeys.map(
|
|
967
|
-
// ele => factory.createLiteralTypeNode(factory.createStringLiteral(ele))
|
|
968
|
-
// )
|
|
969
|
-
// )
|
|
970
|
-
// )
|
|
971
|
-
// );
|
|
972
|
-
// }
|
|
973
|
-
// }
|
|
961
|
+
statements.push.apply(statements, tslib_1.__spreadArray([], tslib_1.__read(SchemaAsts[entity].statements), false));
|
|
962
|
+
}
|
|
974
963
|
statements.push(factory.createTypeAliasDeclaration(undefined, [
|
|
975
964
|
factory.createModifier(ts.SyntaxKind.ExportKeyword)
|
|
976
965
|
], factory.createIdentifier('OpSchema'), undefined, factory.createTypeLiteralNode(members)), factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("OpAttr"), undefined, factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeReferenceNode(factory.createIdentifier("OpSchema"), undefined))));
|
|
@@ -978,7 +967,7 @@ function constructSchema(statements, entity) {
|
|
|
978
967
|
factory.createModifier(ts.SyntaxKind.ExportKeyword)
|
|
979
968
|
], factory.createIdentifier('Schema'), undefined, factory.createIntersectionTypeNode([
|
|
980
969
|
factory.createTypeLiteralNode(members.concat(members2)),
|
|
981
|
-
factory.createMappedTypeNode(undefined, factory.createTypeParameterDeclaration(factory.createIdentifier("A"), factory.createTypeReferenceNode(factory.createIdentifier("ExpressionKey"), undefined), undefined), undefined, factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword), undefined)
|
|
970
|
+
factory.createMappedTypeNode(undefined, factory.createTypeParameterDeclaration(undefined, factory.createIdentifier("A"), factory.createTypeReferenceNode(factory.createIdentifier("ExpressionKey"), undefined), undefined), undefined, factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword), undefined)
|
|
982
971
|
])));
|
|
983
972
|
}
|
|
984
973
|
/**
|
|
@@ -1046,7 +1035,7 @@ function constructFilter(statements, entity) {
|
|
|
1046
1035
|
default: {
|
|
1047
1036
|
var text2_3 = text === 'Schema' ? entity : text;
|
|
1048
1037
|
var manyToOneItem = manyToOneSet && manyToOneSet.find(function (_a) {
|
|
1049
|
-
var _b = __read(_a, 1), refEntity = _b[0];
|
|
1038
|
+
var _b = tslib_1.__read(_a, 1), refEntity = _b[0];
|
|
1050
1039
|
return refEntity === text2_3;
|
|
1051
1040
|
});
|
|
1052
1041
|
if (manyToOneItem) {
|
|
@@ -1081,7 +1070,7 @@ function constructFilter(statements, entity) {
|
|
|
1081
1070
|
}
|
|
1082
1071
|
};
|
|
1083
1072
|
try {
|
|
1084
|
-
for (var schemaAttrs_2 = __values(schemaAttrs), schemaAttrs_2_1 = schemaAttrs_2.next(); !schemaAttrs_2_1.done; schemaAttrs_2_1 = schemaAttrs_2.next()) {
|
|
1073
|
+
for (var schemaAttrs_2 = tslib_1.__values(schemaAttrs), schemaAttrs_2_1 = schemaAttrs_2.next(); !schemaAttrs_2_1.done; schemaAttrs_2_1 = schemaAttrs_2.next()) {
|
|
1085
1074
|
var attr = schemaAttrs_2_1.value;
|
|
1086
1075
|
_loop_3(attr);
|
|
1087
1076
|
}
|
|
@@ -1094,12 +1083,18 @@ function constructFilter(statements, entity) {
|
|
|
1094
1083
|
finally { if (e_3) throw e_3.error; }
|
|
1095
1084
|
}
|
|
1096
1085
|
// type AttrFilter = {};
|
|
1086
|
+
if (ReversePointerRelations[entity]) {
|
|
1087
|
+
// 有反向指针,将反向指针关联的对象的Filter也注入
|
|
1088
|
+
ReversePointerRelations[entity].forEach(function (ele) {
|
|
1089
|
+
return members.push(factory.createPropertySignature(undefined, (0, string_1.firstLetterLowerCase)(ele), undefined, factory.createTypeReferenceNode(createForeignRef(entity, ele, 'Filter'))));
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1097
1092
|
var eumUnionTypeNode = ReversePointerRelations[entity] && ReversePointerRelations[entity].map(function (ele) { return factory.createLiteralTypeNode(factory.createStringLiteral((0, string_1.firstLetterLowerCase)(ele))); });
|
|
1098
1093
|
if (process.env.COMPLING_AS_LIB) {
|
|
1099
1094
|
eumUnionTypeNode && eumUnionTypeNode.push(factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
1100
1095
|
}
|
|
1101
1096
|
statements.push(factory.createTypeAliasDeclaration(undefined, undefined, factory.createIdentifier('AttrFilter'), ReversePointerRelations[entity] ? [
|
|
1102
|
-
factory.createTypeParameterDeclaration(factory.createIdentifier("E"), undefined)
|
|
1097
|
+
factory.createTypeParameterDeclaration(undefined, factory.createIdentifier("E"), undefined)
|
|
1103
1098
|
] : undefined, factory.createTypeLiteralNode(members)));
|
|
1104
1099
|
/**
|
|
1105
1100
|
*
|
|
@@ -1113,7 +1108,12 @@ function constructFilter(statements, entity) {
|
|
|
1113
1108
|
var types = [
|
|
1114
1109
|
factory.createTypeReferenceNode(factory.createIdentifier("AttrFilter"), ReversePointerRelations[entity] ? [factory.createTypeReferenceNode('E')] : undefined),
|
|
1115
1110
|
factory.createTypeReferenceNode(factory.createIdentifier("ExprOp"), [
|
|
1116
|
-
|
|
1111
|
+
process.env.COMPLING_AS_LIB ?
|
|
1112
|
+
factory.createUnionTypeNode([
|
|
1113
|
+
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr')),
|
|
1114
|
+
factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
|
1115
|
+
]) :
|
|
1116
|
+
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr'))
|
|
1117
1117
|
]),
|
|
1118
1118
|
];
|
|
1119
1119
|
// 如果还有其它类型的查询如全文,则加在types数组中
|
|
@@ -1121,7 +1121,7 @@ function constructFilter(statements, entity) {
|
|
|
1121
1121
|
types.push(factory.createTypeReferenceNode('FulltextFilter'));
|
|
1122
1122
|
}
|
|
1123
1123
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("Filter"), ReversePointerRelations[entity] ? [
|
|
1124
|
-
factory.createTypeParameterDeclaration(factory.createIdentifier("E"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Q_EnumValue"), [
|
|
1124
|
+
factory.createTypeParameterDeclaration(undefined, factory.createIdentifier("E"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Q_EnumValue"), [
|
|
1125
1125
|
factory.createUnionTypeNode(eumUnionTypeNode)
|
|
1126
1126
|
]))
|
|
1127
1127
|
] : undefined, factory.createTypeReferenceNode(factory.createIdentifier("MakeFilter"), [factory.createIntersectionTypeNode(types)])));
|
|
@@ -1170,7 +1170,7 @@ function constructProjection(statements, entity) {
|
|
|
1170
1170
|
default: {
|
|
1171
1171
|
var text2_4 = text === 'Schema' ? entity : text;
|
|
1172
1172
|
var manyToOneItem = manyToOneSet && manyToOneSet.find(function (_a) {
|
|
1173
|
-
var _b = __read(_a, 1), refEntity = _b[0];
|
|
1173
|
+
var _b = tslib_1.__read(_a, 1), refEntity = _b[0];
|
|
1174
1174
|
return refEntity === text2_4;
|
|
1175
1175
|
});
|
|
1176
1176
|
if (manyToOneItem) {
|
|
@@ -1209,7 +1209,7 @@ function constructProjection(statements, entity) {
|
|
|
1209
1209
|
}
|
|
1210
1210
|
};
|
|
1211
1211
|
try {
|
|
1212
|
-
for (var schemaAttrs_3 = __values(schemaAttrs), schemaAttrs_3_1 = schemaAttrs_3.next(); !schemaAttrs_3_1.done; schemaAttrs_3_1 = schemaAttrs_3.next()) {
|
|
1212
|
+
for (var schemaAttrs_3 = tslib_1.__values(schemaAttrs), schemaAttrs_3_1 = schemaAttrs_3.next(); !schemaAttrs_3_1.done; schemaAttrs_3_1 = schemaAttrs_3.next()) {
|
|
1213
1213
|
var attr = schemaAttrs_3_1.value;
|
|
1214
1214
|
_loop_4(attr);
|
|
1215
1215
|
}
|
|
@@ -1241,9 +1241,9 @@ function constructProjection(statements, entity) {
|
|
|
1241
1241
|
if (oneToManySet) {
|
|
1242
1242
|
var foreignKeySet = {};
|
|
1243
1243
|
try {
|
|
1244
|
-
for (var oneToManySet_2 = __values(oneToManySet), oneToManySet_2_1 = oneToManySet_2.next(); !oneToManySet_2_1.done; oneToManySet_2_1 = oneToManySet_2.next()) {
|
|
1244
|
+
for (var oneToManySet_2 = tslib_1.__values(oneToManySet), oneToManySet_2_1 = oneToManySet_2.next(); !oneToManySet_2_1.done; oneToManySet_2_1 = oneToManySet_2.next()) {
|
|
1245
1245
|
var oneToManyItem = oneToManySet_2_1.value;
|
|
1246
|
-
var _h = __read(oneToManyItem, 2), entityName = _h[0], foreignKey = _h[1];
|
|
1246
|
+
var _h = tslib_1.__read(oneToManyItem, 2), entityName = _h[0], foreignKey = _h[1];
|
|
1247
1247
|
if (foreignKeySet.hasOwnProperty(entityName)) {
|
|
1248
1248
|
foreignKeySet[entityName].push(foreignKey);
|
|
1249
1249
|
}
|
|
@@ -1285,7 +1285,12 @@ function constructProjection(statements, entity) {
|
|
|
1285
1285
|
}
|
|
1286
1286
|
var exprNode = factory.createTypeReferenceNode(factory.createIdentifier("Partial"), [
|
|
1287
1287
|
factory.createTypeReferenceNode(factory.createIdentifier("ExprOp"), [
|
|
1288
|
-
|
|
1288
|
+
process.env.COMPLING_AS_LIB ?
|
|
1289
|
+
factory.createUnionTypeNode([
|
|
1290
|
+
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr')),
|
|
1291
|
+
factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
|
1292
|
+
]) :
|
|
1293
|
+
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr'))
|
|
1289
1294
|
])
|
|
1290
1295
|
]);
|
|
1291
1296
|
var MetaPropertySignaturs = [
|
|
@@ -1297,7 +1302,7 @@ function constructProjection(statements, entity) {
|
|
|
1297
1302
|
// Projection,正常查询的投影
|
|
1298
1303
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("Projection"), undefined, factory.createIntersectionTypeNode([
|
|
1299
1304
|
factory.createTypeLiteralNode(MetaPropertySignaturs.concat(properties.map(function (_a) {
|
|
1300
|
-
var _b = __read(_a, 3), n = _b[0], q = _b[1], v = _b[2];
|
|
1305
|
+
var _b = tslib_1.__read(_a, 3), n = _b[0], q = _b[1], v = _b[2];
|
|
1301
1306
|
return factory.createPropertySignature(undefined, n, q ? undefined : factory.createToken(ts.SyntaxKind.QuestionToken), v || factory.createLiteralTypeNode(factory.createNumericLiteral("1")));
|
|
1302
1307
|
}))),
|
|
1303
1308
|
exprNode,
|
|
@@ -1305,7 +1310,7 @@ function constructProjection(statements, entity) {
|
|
|
1305
1310
|
// ExportProjection,下载查询的投影
|
|
1306
1311
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("ExportProjection"), undefined, factory.createIntersectionTypeNode([
|
|
1307
1312
|
factory.createTypeLiteralNode(MetaPropertySignaturs.concat(properties.map(function (_a) {
|
|
1308
|
-
var _b = __read(_a, 4), n = _b[0], q = _b[1], v = _b[2], v2 = _b[3];
|
|
1313
|
+
var _b = tslib_1.__read(_a, 4), n = _b[0], q = _b[1], v = _b[2], v2 = _b[3];
|
|
1309
1314
|
return factory.createPropertySignature(undefined, n, factory.createToken(ts.SyntaxKind.QuestionToken), v2 || factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
1310
1315
|
}))),
|
|
1311
1316
|
exprNode,
|
|
@@ -1430,10 +1435,10 @@ function constructQuery(statements, entity) {
|
|
|
1430
1435
|
var manyToSelf = false;
|
|
1431
1436
|
if (manyToOneSet) {
|
|
1432
1437
|
(0, lodash_1.uniqBy)(manyToOneSet, function (_a) {
|
|
1433
|
-
var _b = __read(_a, 1), a = _b[0];
|
|
1438
|
+
var _b = tslib_1.__read(_a, 1), a = _b[0];
|
|
1434
1439
|
return a;
|
|
1435
1440
|
}).forEach(function (_a) {
|
|
1436
|
-
var _b = __read(_a, 2), oneEntity = _b[0], foreignKey = _b[1];
|
|
1441
|
+
var _b = tslib_1.__read(_a, 2), oneEntity = _b[0], foreignKey = _b[1];
|
|
1437
1442
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("".concat(oneEntity, "IdSubQuery")), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Selection"), [factory.createTypeReferenceNode(factory.createIdentifier("".concat(oneEntity, "IdProjection")), undefined)])));
|
|
1438
1443
|
if (oneEntity === entity) {
|
|
1439
1444
|
manyToSelf = true;
|
|
@@ -1455,11 +1460,11 @@ function constructSorter(statements, entity) {
|
|
|
1455
1460
|
var schemaAttrs = Schema[entity].schemaAttrs;
|
|
1456
1461
|
var members = [
|
|
1457
1462
|
// id: 1
|
|
1458
|
-
factory.createPropertySignature(undefined, factory.createIdentifier("id"), undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1"))),
|
|
1463
|
+
factory.createTypeLiteralNode([factory.createPropertySignature(undefined, factory.createIdentifier("id"), undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1")))]),
|
|
1459
1464
|
// $$createAt$$: 1
|
|
1460
|
-
factory.createPropertySignature(undefined, factory.createIdentifier(
|
|
1465
|
+
factory.createTypeLiteralNode([factory.createPropertySignature(undefined, factory.createIdentifier("$$createAt$$"), undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1")))]),
|
|
1461
1466
|
// $$updateAt$$: 1
|
|
1462
|
-
factory.createPropertySignature(undefined, factory.createIdentifier(
|
|
1467
|
+
factory.createTypeLiteralNode([factory.createPropertySignature(undefined, factory.createIdentifier("$$updateAt$$"), undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1")))]),
|
|
1463
1468
|
];
|
|
1464
1469
|
var _b = ManyToOne, _c = entity, manyToOneSet = _b[_c];
|
|
1465
1470
|
var _loop_6 = function (attr) {
|
|
@@ -1485,12 +1490,12 @@ function constructSorter(statements, entity) {
|
|
|
1485
1490
|
default: {
|
|
1486
1491
|
var text2_5 = text === 'Schema' ? entity : text;
|
|
1487
1492
|
var manyToOneItem = manyToOneSet && manyToOneSet.find(function (_a) {
|
|
1488
|
-
var _b = __read(_a, 1), refEntity = _b[0];
|
|
1493
|
+
var _b = tslib_1.__read(_a, 1), refEntity = _b[0];
|
|
1489
1494
|
return refEntity === text2_5;
|
|
1490
1495
|
});
|
|
1491
1496
|
if (manyToOneItem) {
|
|
1492
1497
|
type2 = factory.createTypeReferenceNode(createForeignRef(entity, text2_5, 'SortAttr'));
|
|
1493
|
-
members.push(factory.createPropertySignature(undefined, "".concat(name_5.text, "Id"), undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1"))));
|
|
1498
|
+
members.push(factory.createTypeLiteralNode([factory.createPropertySignature(undefined, factory.createIdentifier("".concat(name_5.text, "Id")), undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1")))]));
|
|
1494
1499
|
}
|
|
1495
1500
|
else if (!['Object'].includes(text)) {
|
|
1496
1501
|
// todo 对State的专门处理
|
|
@@ -1499,19 +1504,19 @@ function constructSorter(statements, entity) {
|
|
|
1499
1504
|
}
|
|
1500
1505
|
}
|
|
1501
1506
|
if (type2) {
|
|
1502
|
-
members.push(factory.createPropertySignature(undefined, name_5, undefined, type2));
|
|
1507
|
+
members.push(factory.createTypeLiteralNode([factory.createPropertySignature(undefined, name_5, undefined, type2)]));
|
|
1503
1508
|
}
|
|
1504
1509
|
}
|
|
1505
1510
|
}
|
|
1506
1511
|
else if (ts.isUnionTypeNode(type) && ts.isLiteralTypeNode(type.types[0]) || ts.isLiteralTypeNode(type)) {
|
|
1507
|
-
members.push(factory.createPropertySignature(undefined, name_5, undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1"))));
|
|
1512
|
+
members.push(factory.createTypeLiteralNode([factory.createPropertySignature(undefined, name_5, undefined, factory.createLiteralTypeNode(factory.createNumericLiteral("1")))]));
|
|
1508
1513
|
}
|
|
1509
1514
|
else {
|
|
1510
1515
|
// 本地规定的shape,非结构化属性不参与排序
|
|
1511
1516
|
}
|
|
1512
1517
|
};
|
|
1513
1518
|
try {
|
|
1514
|
-
for (var schemaAttrs_4 = __values(schemaAttrs), schemaAttrs_4_1 = schemaAttrs_4.next(); !schemaAttrs_4_1.done; schemaAttrs_4_1 = schemaAttrs_4.next()) {
|
|
1519
|
+
for (var schemaAttrs_4 = tslib_1.__values(schemaAttrs), schemaAttrs_4_1 = schemaAttrs_4.next(); !schemaAttrs_4_1.done; schemaAttrs_4_1 = schemaAttrs_4.next()) {
|
|
1515
1520
|
var attr = schemaAttrs_4_1.value;
|
|
1516
1521
|
_loop_6(attr);
|
|
1517
1522
|
}
|
|
@@ -1525,30 +1530,37 @@ function constructSorter(statements, entity) {
|
|
|
1525
1530
|
}
|
|
1526
1531
|
if (ReversePointerRelations[entity]) {
|
|
1527
1532
|
ReversePointerRelations[entity].forEach(function (one) {
|
|
1528
|
-
members.push(factory.createPropertySignature(undefined, (0, string_1.firstLetterLowerCase)(one), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one, 'SortAttr'))));
|
|
1533
|
+
members.push(factory.createTypeLiteralNode([factory.createPropertySignature(undefined, (0, string_1.firstLetterLowerCase)(one), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one, 'SortAttr')))]));
|
|
1529
1534
|
});
|
|
1530
|
-
if (process.env.COMPLING_AS_LIB) {
|
|
1531
|
-
members.push(factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("k"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)));
|
|
1532
|
-
}
|
|
1533
1535
|
}
|
|
1536
|
+
if (process.env.COMPLING_AS_LIB) {
|
|
1537
|
+
members.push(factory.createTypeLiteralNode([factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("k"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword))]));
|
|
1538
|
+
}
|
|
1539
|
+
members.push(factory.createTypeReferenceNode(factory.createIdentifier("OneOf"), [factory.createTypeReferenceNode(factory.createIdentifier("ExprOp"), [
|
|
1540
|
+
process.env.COMPLING_AS_LIB ?
|
|
1541
|
+
factory.createUnionTypeNode([
|
|
1542
|
+
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr')),
|
|
1543
|
+
factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
|
1544
|
+
]) :
|
|
1545
|
+
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr'))
|
|
1546
|
+
])]));
|
|
1534
1547
|
/**
|
|
1535
1548
|
*
|
|
1536
|
-
export type SortAttr =
|
|
1549
|
+
export type SortAttr = {
|
|
1537
1550
|
id: 1;
|
|
1538
|
-
|
|
1539
|
-
nickname: 1;
|
|
1540
|
-
age: 1;
|
|
1541
|
-
gender: 1;
|
|
1551
|
+
} | {
|
|
1542
1552
|
$$createAt$$: 1;
|
|
1553
|
+
} | {
|
|
1543
1554
|
$$updateAt$$: 1;
|
|
1544
|
-
}
|
|
1555
|
+
} | {
|
|
1556
|
+
modiId: 1;
|
|
1557
|
+
} | {
|
|
1558
|
+
modi: Modi.SortAttr;
|
|
1559
|
+
} | {
|
|
1560
|
+
[k: string]: any;
|
|
1561
|
+
} | OneOf<ExprOp<OpAttr>>
|
|
1545
1562
|
*/
|
|
1546
|
-
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("SortAttr"), undefined, factory.
|
|
1547
|
-
factory.createTypeLiteralNode(members),
|
|
1548
|
-
factory.createTypeReferenceNode(factory.createIdentifier("ExprOp"), [
|
|
1549
|
-
factory.createTypeReferenceNode(factory.createIdentifier('OpAttr'))
|
|
1550
|
-
])
|
|
1551
|
-
])])));
|
|
1563
|
+
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("SortAttr"), undefined, factory.createUnionTypeNode(members)));
|
|
1552
1564
|
/**
|
|
1553
1565
|
* export type SortNode = {
|
|
1554
1566
|
$attr: SortAttr;
|
|
@@ -1574,9 +1586,9 @@ function constructFullAttrs(statements, entity) {
|
|
|
1574
1586
|
if (manyToOneSet && manyToOneSet.length) {
|
|
1575
1587
|
var mtoAttrs = [];
|
|
1576
1588
|
try {
|
|
1577
|
-
for (var manyToOneSet_1 = __values(manyToOneSet), manyToOneSet_1_1 = manyToOneSet_1.next(); !manyToOneSet_1_1.done; manyToOneSet_1_1 = manyToOneSet_1.next()) {
|
|
1589
|
+
for (var manyToOneSet_1 = tslib_1.__values(manyToOneSet), manyToOneSet_1_1 = manyToOneSet_1.next(); !manyToOneSet_1_1.done; manyToOneSet_1_1 = manyToOneSet_1.next()) {
|
|
1578
1590
|
var item = manyToOneSet_1_1.value;
|
|
1579
|
-
var _g = __read(item, 2), one = _g[0], key = _g[1];
|
|
1591
|
+
var _g = tslib_1.__read(item, 2), one = _g[0], key = _g[1];
|
|
1580
1592
|
if (one === entity) {
|
|
1581
1593
|
// 递归引用自身,因为typescript本身不支持递归,因此这里做一个显式的三层递归应该够用了
|
|
1582
1594
|
mtoAttrs.push(factory.createTemplateLiteralType(factory.createTemplateHead("".concat(key, "."), "".concat(key, ".")), [factory.createTemplateLiteralTypeSpan(factory.createTypeReferenceNode(factory.createIdentifier("OpAttr"), undefined), factory.createTemplateTail("", ""))]), factory.createTemplateLiteralType(factory.createTemplateHead("".concat(key, ".").concat(key, "."), "".concat(key, ".").concat(key, ".")), [factory.createTemplateLiteralTypeSpan(factory.createTypeReferenceNode(factory.createIdentifier("OpAttr"), undefined), factory.createTemplateTail("", ""))]), factory.createTemplateLiteralType(factory.createTemplateHead("".concat(key, ".").concat(key, ".").concat(key, "."), "".concat(key, ".").concat(key, ".").concat(key, ".")), [factory.createTemplateLiteralTypeSpan(factory.createTypeReferenceNode(factory.createIdentifier("OpAttr"), undefined), factory.createTemplateTail("", ""))]));
|
|
@@ -1594,9 +1606,9 @@ function constructFullAttrs(statements, entity) {
|
|
|
1594
1606
|
}
|
|
1595
1607
|
finally { if (e_7) throw e_7.error; }
|
|
1596
1608
|
}
|
|
1597
|
-
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("NativeAttr"), undefined, factory.createUnionTypeNode(__spreadArray([
|
|
1609
|
+
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("NativeAttr"), undefined, factory.createUnionTypeNode(tslib_1.__spreadArray([
|
|
1598
1610
|
factory.createTypeReferenceNode(factory.createIdentifier("OpAttr"), undefined)
|
|
1599
|
-
], __read(mtoAttrs), false))));
|
|
1611
|
+
], tslib_1.__read(mtoAttrs), false))));
|
|
1600
1612
|
}
|
|
1601
1613
|
else {
|
|
1602
1614
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("NativeAttr"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("OpAttr"), undefined)));
|
|
@@ -1604,9 +1616,9 @@ function constructFullAttrs(statements, entity) {
|
|
|
1604
1616
|
var foreignKeySet = {};
|
|
1605
1617
|
if (oneToManySet && oneToManySet.length > 0) {
|
|
1606
1618
|
try {
|
|
1607
|
-
for (var oneToManySet_3 = __values(oneToManySet), oneToManySet_3_1 = oneToManySet_3.next(); !oneToManySet_3_1.done; oneToManySet_3_1 = oneToManySet_3.next()) {
|
|
1619
|
+
for (var oneToManySet_3 = tslib_1.__values(oneToManySet), oneToManySet_3_1 = oneToManySet_3.next(); !oneToManySet_3_1.done; oneToManySet_3_1 = oneToManySet_3.next()) {
|
|
1608
1620
|
var oneToManyItem = oneToManySet_3_1.value;
|
|
1609
|
-
var _h = __read(oneToManyItem, 2), entityName = _h[0], foreignKey = _h[1];
|
|
1621
|
+
var _h = tslib_1.__read(oneToManyItem, 2), entityName = _h[0], foreignKey = _h[1];
|
|
1610
1622
|
if (foreignKeySet.hasOwnProperty(entityName)) {
|
|
1611
1623
|
foreignKeySet[entityName].push(foreignKey);
|
|
1612
1624
|
}
|
|
@@ -1648,9 +1660,9 @@ function constructFullAttrs(statements, entity) {
|
|
|
1648
1660
|
for (var entityName in foreignKeySet) {
|
|
1649
1661
|
_loop_7(entityName);
|
|
1650
1662
|
}
|
|
1651
|
-
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("FullAttr"), undefined, factory.createUnionTypeNode(__spreadArray([
|
|
1663
|
+
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("FullAttr"), undefined, factory.createUnionTypeNode(tslib_1.__spreadArray([
|
|
1652
1664
|
factory.createTypeReferenceNode(factory.createIdentifier("NativeAttr"), undefined)
|
|
1653
|
-
], __read(otmAttrs_1), false))));
|
|
1665
|
+
], tslib_1.__read(otmAttrs_1), false))));
|
|
1654
1666
|
}
|
|
1655
1667
|
else {
|
|
1656
1668
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("FullAttr"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("NativeAttr"), undefined)));
|
|
@@ -1660,14 +1672,17 @@ function constructActions(statements, entity) {
|
|
|
1660
1672
|
var e_9, _a, e_10, _b, e_11, _c, e_12, _d, e_13, _e, e_14, _f, e_15, _g, e_16, _h, e_17, _j;
|
|
1661
1673
|
// Selection
|
|
1662
1674
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("SelectOperation"), [
|
|
1663
|
-
factory.createTypeParameterDeclaration(factory.createIdentifier("P"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Projection"), undefined))
|
|
1664
|
-
], factory.createTypeReferenceNode(factory.createIdentifier("
|
|
1665
|
-
factory.
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1675
|
+
factory.createTypeParameterDeclaration(undefined, factory.createIdentifier("P"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Projection"), undefined))
|
|
1676
|
+
], factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
1677
|
+
factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
1678
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("select")),
|
|
1679
|
+
factory.createTypeReferenceNode(factory.createIdentifier("P"), undefined),
|
|
1680
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Filter"), undefined),
|
|
1681
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Sorter"), undefined)
|
|
1682
|
+
]),
|
|
1683
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("id"))
|
|
1669
1684
|
])), factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("Selection"), [
|
|
1670
|
-
factory.createTypeParameterDeclaration(factory.createIdentifier("P"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Projection"), undefined))
|
|
1685
|
+
factory.createTypeParameterDeclaration(undefined, factory.createIdentifier("P"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Projection"), undefined))
|
|
1671
1686
|
], factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
1672
1687
|
factory.createTypeReferenceNode(factory.createIdentifier("SelectOperation"), [
|
|
1673
1688
|
factory.createTypeReferenceNode(factory.createIdentifier("P"), undefined)
|
|
@@ -1686,9 +1701,9 @@ function constructActions(statements, entity) {
|
|
|
1686
1701
|
var foreignKeySet = {};
|
|
1687
1702
|
if (oneToManySet) {
|
|
1688
1703
|
try {
|
|
1689
|
-
for (var oneToManySet_4 = __values(oneToManySet), oneToManySet_4_1 = oneToManySet_4.next(); !oneToManySet_4_1.done; oneToManySet_4_1 = oneToManySet_4.next()) {
|
|
1704
|
+
for (var oneToManySet_4 = tslib_1.__values(oneToManySet), oneToManySet_4_1 = oneToManySet_4.next(); !oneToManySet_4_1.done; oneToManySet_4_1 = oneToManySet_4.next()) {
|
|
1690
1705
|
var oneToManyItem = oneToManySet_4_1.value;
|
|
1691
|
-
var _p = __read(oneToManyItem, 2), entityName = _p[0], foreignKey = _p[1];
|
|
1706
|
+
var _p = tslib_1.__read(oneToManyItem, 2), entityName = _p[0], foreignKey = _p[1];
|
|
1692
1707
|
if (foreignKeySet.hasOwnProperty(entityName)) {
|
|
1693
1708
|
foreignKeySet[entityName].push(foreignKey);
|
|
1694
1709
|
}
|
|
@@ -1706,13 +1721,16 @@ function constructActions(statements, entity) {
|
|
|
1706
1721
|
}
|
|
1707
1722
|
}
|
|
1708
1723
|
// CreateOperationData
|
|
1709
|
-
var
|
|
1724
|
+
var foreignKeyAttr = [];
|
|
1725
|
+
if (ReversePointerEntities[entity]) {
|
|
1726
|
+
foreignKeyAttr.push('entity', 'entityId');
|
|
1727
|
+
}
|
|
1710
1728
|
if (manyToOneSet) {
|
|
1711
1729
|
try {
|
|
1712
|
-
for (var manyToOneSet_2 = __values(manyToOneSet), manyToOneSet_2_1 = manyToOneSet_2.next(); !manyToOneSet_2_1.done; manyToOneSet_2_1 = manyToOneSet_2.next()) {
|
|
1730
|
+
for (var manyToOneSet_2 = tslib_1.__values(manyToOneSet), manyToOneSet_2_1 = manyToOneSet_2.next(); !manyToOneSet_2_1.done; manyToOneSet_2_1 = manyToOneSet_2.next()) {
|
|
1713
1731
|
var one = manyToOneSet_2_1.value;
|
|
1714
1732
|
if (!ReversePointerRelations[entity] || !ReversePointerRelations[entity].includes(one[1])) {
|
|
1715
|
-
|
|
1733
|
+
foreignKeyAttr.push("".concat(one[1], "Id"));
|
|
1716
1734
|
}
|
|
1717
1735
|
}
|
|
1718
1736
|
}
|
|
@@ -1723,16 +1741,13 @@ function constructActions(statements, entity) {
|
|
|
1723
1741
|
}
|
|
1724
1742
|
finally { if (e_10) throw e_10.error; }
|
|
1725
1743
|
}
|
|
1726
|
-
if (ReversePointerRelations[entity]) {
|
|
1727
|
-
foreignKeyAttrNode.push(factory.createLiteralTypeNode(factory.createStringLiteral('entity')), factory.createLiteralTypeNode(factory.createStringLiteral('entityId')));
|
|
1728
|
-
}
|
|
1729
1744
|
}
|
|
1730
1745
|
var adNodes = [
|
|
1731
1746
|
factory.createTypeReferenceNode(factory.createIdentifier("FormCreateData"), [
|
|
1732
|
-
|
|
1747
|
+
foreignKeyAttr.length > 0
|
|
1733
1748
|
? factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
1734
1749
|
factory.createTypeReferenceNode(factory.createIdentifier("OpSchema"), undefined),
|
|
1735
|
-
factory.createUnionTypeNode(
|
|
1750
|
+
factory.createUnionTypeNode((0, lodash_1.uniq)(foreignKeyAttr).map(function (ele) { return factory.createLiteralTypeNode(factory.createStringLiteral(ele)); }))
|
|
1736
1751
|
])
|
|
1737
1752
|
: factory.createTypeReferenceNode(factory.createIdentifier("OpSchema"), undefined)
|
|
1738
1753
|
])
|
|
@@ -1746,22 +1761,45 @@ function constructActions(statements, entity) {
|
|
|
1746
1761
|
*/
|
|
1747
1762
|
var upsertOneNodes = [];
|
|
1748
1763
|
try {
|
|
1749
|
-
for (var manyToOneSet_3 = __values(manyToOneSet), manyToOneSet_3_1 = manyToOneSet_3.next(); !manyToOneSet_3_1.done; manyToOneSet_3_1 = manyToOneSet_3.next()) {
|
|
1764
|
+
for (var manyToOneSet_3 = tslib_1.__values(manyToOneSet), manyToOneSet_3_1 = manyToOneSet_3.next(); !manyToOneSet_3_1.done; manyToOneSet_3_1 = manyToOneSet_3.next()) {
|
|
1750
1765
|
var one = manyToOneSet_3_1.value;
|
|
1751
1766
|
if (!ReversePointerRelations[entity] || !ReversePointerRelations[entity].includes(one[0])) {
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
]),
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
])
|
|
1767
|
+
var oneEntity = one[0];
|
|
1768
|
+
var cascadeCreateNode = factory.createTypeLiteralNode([
|
|
1769
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
1770
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), one[2] ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined, factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'CreateSingleOperation')))
|
|
1771
|
+
]);
|
|
1772
|
+
var cascadeUpdateNode = factory.createTypeLiteralNode([
|
|
1773
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), undefined, factory.createTypeReferenceNode(factory.createIdentifier("String"), [factory.createLiteralTypeNode(factory.createNumericLiteral("64"))])),
|
|
1774
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'UpdateOperation')))
|
|
1775
|
+
]);
|
|
1776
|
+
var noCascadeNode = factory.createTypeLiteralNode([
|
|
1777
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), one[2] ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined, factory.createTypeReferenceNode(factory.createIdentifier("String"), [factory.createLiteralTypeNode(factory.createNumericLiteral("64"))]))
|
|
1778
|
+
]);
|
|
1779
|
+
if (Schema[oneEntity].static) {
|
|
1780
|
+
upsertOneNodes.push(noCascadeNode);
|
|
1781
|
+
}
|
|
1782
|
+
else {
|
|
1783
|
+
switch (Schema[oneEntity].actionType) {
|
|
1784
|
+
case 'crud':
|
|
1785
|
+
case 'excludeRemove': {
|
|
1786
|
+
upsertOneNodes.push(factory.createUnionTypeNode([cascadeCreateNode, cascadeUpdateNode, noCascadeNode]));
|
|
1787
|
+
break;
|
|
1788
|
+
}
|
|
1789
|
+
case 'excludeUpdate':
|
|
1790
|
+
case 'appendOnly': {
|
|
1791
|
+
upsertOneNodes.push(factory.createUnionTypeNode([cascadeCreateNode, noCascadeNode]));
|
|
1792
|
+
break;
|
|
1793
|
+
}
|
|
1794
|
+
case 'readOnly': {
|
|
1795
|
+
upsertOneNodes.push(noCascadeNode);
|
|
1796
|
+
break;
|
|
1797
|
+
}
|
|
1798
|
+
default: {
|
|
1799
|
+
(0, assert_1.default)(false);
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1765
1803
|
}
|
|
1766
1804
|
}
|
|
1767
1805
|
}
|
|
@@ -1772,23 +1810,59 @@ function constructActions(statements, entity) {
|
|
|
1772
1810
|
}
|
|
1773
1811
|
finally { if (e_11) throw e_11.error; }
|
|
1774
1812
|
}
|
|
1775
|
-
|
|
1813
|
+
if (upsertOneNodes.length > 0) {
|
|
1814
|
+
adNodes.push(factory.createIntersectionTypeNode(upsertOneNodes));
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
var reverseOneNodes = [];
|
|
1818
|
+
if (ReversePointerEntities[entity]) {
|
|
1776
1819
|
if (ReversePointerRelations[entity]) {
|
|
1777
1820
|
try {
|
|
1778
|
-
for (var _q = __values(ReversePointerRelations[entity]), _r = _q.next(); !_r.done; _r = _q.next()) {
|
|
1821
|
+
for (var _q = tslib_1.__values(ReversePointerRelations[entity]), _r = _q.next(); !_r.done; _r = _q.next()) {
|
|
1779
1822
|
var one = _r.value;
|
|
1780
|
-
|
|
1823
|
+
var cascadeCreateNode = factory.createTypeLiteralNode([
|
|
1781
1824
|
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
1782
1825
|
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
1783
1826
|
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
1784
1827
|
factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')))
|
|
1785
|
-
])
|
|
1828
|
+
]);
|
|
1829
|
+
var cascadeUpdateNode = factory.createTypeLiteralNode([
|
|
1786
1830
|
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
1787
1831
|
factory.createLiteralTypeNode(factory.createStringLiteral("".concat((0, string_1.firstLetterLowerCase)(one))))),
|
|
1788
1832
|
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
1789
1833
|
factory.createTypeReferenceNode(factory.createIdentifier("String"), [factory.createLiteralTypeNode(factory.createNumericLiteral("64"))])),
|
|
1790
|
-
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)),
|
|
1791
|
-
])
|
|
1834
|
+
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')))
|
|
1835
|
+
]);
|
|
1836
|
+
var noCascadeNode = factory.createTypeLiteralNode([
|
|
1837
|
+
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
1838
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("".concat((0, string_1.firstLetterLowerCase)(one))))),
|
|
1839
|
+
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), undefined, // 反向指针好像不能为空,以后或许会有特例 by Xc
|
|
1840
|
+
factory.createTypeReferenceNode(factory.createIdentifier("String"), [factory.createLiteralTypeNode(factory.createNumericLiteral("64"))]))
|
|
1841
|
+
]);
|
|
1842
|
+
if (Schema[one].static) {
|
|
1843
|
+
reverseOneNodes.push(noCascadeNode);
|
|
1844
|
+
}
|
|
1845
|
+
else {
|
|
1846
|
+
switch (Schema[one].actionType) {
|
|
1847
|
+
case 'crud':
|
|
1848
|
+
case 'excludeRemove': {
|
|
1849
|
+
reverseOneNodes.push(cascadeCreateNode, cascadeUpdateNode, noCascadeNode);
|
|
1850
|
+
break;
|
|
1851
|
+
}
|
|
1852
|
+
case 'appendOnly':
|
|
1853
|
+
case 'excludeUpdate': {
|
|
1854
|
+
reverseOneNodes.push(cascadeCreateNode, noCascadeNode);
|
|
1855
|
+
break;
|
|
1856
|
+
}
|
|
1857
|
+
case 'readOnly': {
|
|
1858
|
+
reverseOneNodes.push(noCascadeNode);
|
|
1859
|
+
break;
|
|
1860
|
+
}
|
|
1861
|
+
default: {
|
|
1862
|
+
(0, assert_1.default)(false);
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1792
1866
|
}
|
|
1793
1867
|
}
|
|
1794
1868
|
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
@@ -1798,15 +1872,14 @@ function constructActions(statements, entity) {
|
|
|
1798
1872
|
}
|
|
1799
1873
|
finally { if (e_12) throw e_12.error; }
|
|
1800
1874
|
}
|
|
1801
|
-
if (process.env.COMPLING_AS_LIB) {
|
|
1802
|
-
// 如果是base,要包容更多可能的反指
|
|
1803
|
-
reverseOneNodes.push(factory.createTypeLiteralNode([
|
|
1804
|
-
factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("K"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword))
|
|
1805
|
-
]));
|
|
1806
|
-
}
|
|
1807
1875
|
}
|
|
1808
|
-
if (
|
|
1809
|
-
|
|
1876
|
+
if (process.env.COMPLING_AS_LIB) {
|
|
1877
|
+
// 如果是base,要包容更多可能的反指
|
|
1878
|
+
reverseOneNodes.push(factory.createTypeLiteralNode([
|
|
1879
|
+
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)),
|
|
1880
|
+
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)),
|
|
1881
|
+
factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("K"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword))
|
|
1882
|
+
]));
|
|
1810
1883
|
}
|
|
1811
1884
|
if (reverseOneNodes.length > 0) {
|
|
1812
1885
|
adNodes.push(factory.createUnionTypeNode(reverseOneNodes));
|
|
@@ -1814,9 +1887,6 @@ function constructActions(statements, entity) {
|
|
|
1814
1887
|
}
|
|
1815
1888
|
// 一对多
|
|
1816
1889
|
var propertySignatures = [];
|
|
1817
|
-
if (process.env.COMPLING_AS_LIB) {
|
|
1818
|
-
propertySignatures.push(factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("k"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)));
|
|
1819
|
-
}
|
|
1820
1890
|
if (oneToManySet) {
|
|
1821
1891
|
var _loop_8 = function (entityName) {
|
|
1822
1892
|
var entityNameLc = (0, string_1.firstLetterLowerCase)(entityName);
|
|
@@ -1832,15 +1902,16 @@ function constructActions(statements, entity) {
|
|
|
1832
1902
|
factory.createLiteralTypeNode(factory.createStringLiteral("".concat(foreignKey, "Id")))
|
|
1833
1903
|
])
|
|
1834
1904
|
]);
|
|
1835
|
-
var
|
|
1905
|
+
var otmCreateSingleOperationNode = factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
1836
1906
|
factory.createLiteralTypeNode(factory.createStringLiteral("create")),
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1907
|
+
otmCreateOperationDataNode
|
|
1908
|
+
]);
|
|
1909
|
+
var otmCreateMultipleOperationNode = factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
1910
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("create")),
|
|
1911
|
+
factory.createArrayTypeNode(otmCreateOperationDataNode)
|
|
1841
1912
|
]);
|
|
1842
1913
|
var otmUpdateOperationNode = factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
1843
|
-
factory.createLiteralTypeNode(factory.createStringLiteral("
|
|
1914
|
+
factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'UpdateOperation'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral("action"))),
|
|
1844
1915
|
factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
1845
1916
|
factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'UpdateOperationData'), undefined),
|
|
1846
1917
|
factory.createUnionTypeNode(foreignKey === 'entity' ? [
|
|
@@ -1853,13 +1924,35 @@ function constructActions(statements, entity) {
|
|
|
1853
1924
|
]),
|
|
1854
1925
|
factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'Filter'), undefined)
|
|
1855
1926
|
]);
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1927
|
+
if (!Schema[entityName].static) {
|
|
1928
|
+
switch (Schema[entityName].actionType) {
|
|
1929
|
+
case 'crud': {
|
|
1930
|
+
propertySignatures.push(factory.createPropertySignature(undefined, factory.createIdentifier(identifier), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
1931
|
+
otmUpdateOperationNode,
|
|
1932
|
+
otmCreateMultipleOperationNode,
|
|
1933
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Array"), [factory.createUnionTypeNode([
|
|
1934
|
+
otmCreateSingleOperationNode,
|
|
1935
|
+
otmUpdateOperationNode
|
|
1936
|
+
])])
|
|
1937
|
+
])));
|
|
1938
|
+
break;
|
|
1939
|
+
}
|
|
1940
|
+
case 'appendOnly':
|
|
1941
|
+
case 'excludeUpdate': {
|
|
1942
|
+
propertySignatures.push(factory.createPropertySignature(undefined, factory.createIdentifier(identifier), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
1943
|
+
otmCreateMultipleOperationNode,
|
|
1944
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Array"), [otmCreateSingleOperationNode])
|
|
1945
|
+
])));
|
|
1946
|
+
break;
|
|
1947
|
+
}
|
|
1948
|
+
case 'readOnly': {
|
|
1949
|
+
break;
|
|
1950
|
+
}
|
|
1951
|
+
default: {
|
|
1952
|
+
(0, assert_1.default)(false);
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1863
1956
|
});
|
|
1864
1957
|
};
|
|
1865
1958
|
for (var entityName in foreignKeySet) {
|
|
@@ -1882,13 +1975,16 @@ function constructActions(statements, entity) {
|
|
|
1882
1975
|
factory.createTypeReferenceNode(factory.createIdentifier("CreateMultipleOperation"))
|
|
1883
1976
|
])));
|
|
1884
1977
|
// UpdateOperationData
|
|
1885
|
-
|
|
1978
|
+
foreignKeyAttr = [];
|
|
1979
|
+
if (ReversePointerRelations[entity]) {
|
|
1980
|
+
foreignKeyAttr.push('entity', 'entityId');
|
|
1981
|
+
}
|
|
1886
1982
|
if (manyToOneSet) {
|
|
1887
1983
|
try {
|
|
1888
|
-
for (var manyToOneSet_4 = __values(manyToOneSet), manyToOneSet_4_1 = manyToOneSet_4.next(); !manyToOneSet_4_1.done; manyToOneSet_4_1 = manyToOneSet_4.next()) {
|
|
1984
|
+
for (var manyToOneSet_4 = tslib_1.__values(manyToOneSet), manyToOneSet_4_1 = manyToOneSet_4.next(); !manyToOneSet_4_1.done; manyToOneSet_4_1 = manyToOneSet_4.next()) {
|
|
1889
1985
|
var one = manyToOneSet_4_1.value;
|
|
1890
1986
|
if (!ReversePointerRelations[entity] || !ReversePointerRelations[entity].includes(one[1])) {
|
|
1891
|
-
|
|
1987
|
+
foreignKeyAttr.push("".concat(one[1], "Id"));
|
|
1892
1988
|
}
|
|
1893
1989
|
}
|
|
1894
1990
|
}
|
|
@@ -1899,15 +1995,12 @@ function constructActions(statements, entity) {
|
|
|
1899
1995
|
}
|
|
1900
1996
|
finally { if (e_13) throw e_13.error; }
|
|
1901
1997
|
}
|
|
1902
|
-
if (ReversePointerRelations[entity]) {
|
|
1903
|
-
foreignKeyAttrNode.push(factory.createLiteralTypeNode(factory.createStringLiteral('entity')), factory.createLiteralTypeNode(factory.createStringLiteral('entityId')));
|
|
1904
|
-
}
|
|
1905
1998
|
}
|
|
1906
1999
|
adNodes = [
|
|
1907
2000
|
factory.createTypeReferenceNode(factory.createIdentifier("FormUpdateData"), [
|
|
1908
|
-
|
|
2001
|
+
foreignKeyAttr.length > 0 ? factory.createTypeReferenceNode(factory.createIdentifier("Omit"), [
|
|
1909
2002
|
factory.createTypeReferenceNode(factory.createIdentifier("OpSchema"), undefined),
|
|
1910
|
-
factory.createUnionTypeNode(
|
|
2003
|
+
factory.createUnionTypeNode((0, lodash_1.uniq)(foreignKeyAttr).map(function (ele) { return factory.createLiteralTypeNode(factory.createStringLiteral(ele)); }))
|
|
1911
2004
|
]) : factory.createTypeReferenceNode(factory.createIdentifier("OpSchema"), undefined)
|
|
1912
2005
|
])
|
|
1913
2006
|
];
|
|
@@ -1920,26 +2013,58 @@ function constructActions(statements, entity) {
|
|
|
1920
2013
|
*/
|
|
1921
2014
|
var upsertOneNodes = [];
|
|
1922
2015
|
try {
|
|
1923
|
-
for (var manyToOneSet_5 = __values(manyToOneSet), manyToOneSet_5_1 = manyToOneSet_5.next(); !manyToOneSet_5_1.done; manyToOneSet_5_1 = manyToOneSet_5.next()) {
|
|
2016
|
+
for (var manyToOneSet_5 = tslib_1.__values(manyToOneSet), manyToOneSet_5_1 = manyToOneSet_5.next(); !manyToOneSet_5_1.done; manyToOneSet_5_1 = manyToOneSet_5.next()) {
|
|
1924
2017
|
var one = manyToOneSet_5_1.value;
|
|
1925
2018
|
if (!ReversePointerRelations[entity] || !ReversePointerRelations[entity].includes(one[0])) {
|
|
1926
|
-
|
|
1927
|
-
factory.
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
factory.
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
2019
|
+
var cascadeCreateNode = factory.createTypeLiteralNode([
|
|
2020
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'CreateSingleOperation'))),
|
|
2021
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
2022
|
+
]);
|
|
2023
|
+
var cascadeUpdateNode = factory.createTypeLiteralNode([
|
|
2024
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'UpdateOperation'))),
|
|
2025
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
2026
|
+
]);
|
|
2027
|
+
var cascadeRemoveNode = factory.createTypeLiteralNode([
|
|
2028
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), undefined, factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'RemoveOperation'))),
|
|
2029
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
2030
|
+
]);
|
|
2031
|
+
var noCascadeNode = factory.createTypeLiteralNode([
|
|
2032
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
2033
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("".concat(one[1], "Id")), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2034
|
+
factory.createTypeReferenceNode(factory.createIdentifier("String"), [factory.createLiteralTypeNode(factory.createNumericLiteral("64"))]),
|
|
2035
|
+
factory.createLiteralTypeNode(factory.createNull())
|
|
2036
|
+
])),
|
|
2037
|
+
]);
|
|
2038
|
+
if (Schema[one[0]].static) {
|
|
2039
|
+
upsertOneNodes.push(noCascadeNode);
|
|
2040
|
+
}
|
|
2041
|
+
else {
|
|
2042
|
+
switch (Schema[one[0]].actionType) {
|
|
2043
|
+
case 'crud': {
|
|
2044
|
+
upsertOneNodes.push(factory.createUnionTypeNode([cascadeCreateNode, cascadeUpdateNode, cascadeRemoveNode, noCascadeNode]));
|
|
2045
|
+
break;
|
|
2046
|
+
}
|
|
2047
|
+
case 'excludeUpdate': {
|
|
2048
|
+
upsertOneNodes.push(factory.createUnionTypeNode([cascadeCreateNode, cascadeRemoveNode, noCascadeNode]));
|
|
2049
|
+
break;
|
|
2050
|
+
}
|
|
2051
|
+
case 'appendOnly': {
|
|
2052
|
+
upsertOneNodes.push(factory.createUnionTypeNode([cascadeCreateNode, noCascadeNode]));
|
|
2053
|
+
break;
|
|
2054
|
+
}
|
|
2055
|
+
case 'readOnly': {
|
|
2056
|
+
upsertOneNodes.push(noCascadeNode);
|
|
2057
|
+
break;
|
|
2058
|
+
}
|
|
2059
|
+
case 'excludeRemove': {
|
|
2060
|
+
upsertOneNodes.push(factory.createUnionTypeNode([cascadeCreateNode, cascadeUpdateNode, noCascadeNode]));
|
|
2061
|
+
break;
|
|
2062
|
+
}
|
|
2063
|
+
default: {
|
|
2064
|
+
(0, assert_1.default)(false);
|
|
2065
|
+
}
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
1943
2068
|
}
|
|
1944
2069
|
}
|
|
1945
2070
|
}
|
|
@@ -1953,22 +2078,47 @@ function constructActions(statements, entity) {
|
|
|
1953
2078
|
if (upsertOneNodes.length > 0) {
|
|
1954
2079
|
adNodes.push(factory.createIntersectionTypeNode(upsertOneNodes));
|
|
1955
2080
|
}
|
|
1956
|
-
var
|
|
2081
|
+
var reverseOneNodes_1 = [];
|
|
1957
2082
|
if (ReversePointerRelations[entity]) {
|
|
1958
2083
|
var refEntityLitrals = [];
|
|
1959
2084
|
try {
|
|
1960
|
-
for (var _s = __values(ReversePointerRelations[entity]), _t = _s.next(); !_t.done; _t = _s.next()) {
|
|
2085
|
+
for (var _s = tslib_1.__values(ReversePointerRelations[entity]), _t = _s.next(); !_t.done; _t = _s.next()) {
|
|
1961
2086
|
var one = _t.value;
|
|
1962
2087
|
refEntityLitrals.push(factory.createLiteralTypeNode(factory.createStringLiteral("".concat((0, string_1.firstLetterLowerCase)(one)))));
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
2088
|
+
var actionNodes = [];
|
|
2089
|
+
if (!Schema[one].static) {
|
|
2090
|
+
switch (Schema[one].actionType) {
|
|
2091
|
+
case 'crud': {
|
|
2092
|
+
actionNodes.push(factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')), factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation')));
|
|
2093
|
+
break;
|
|
2094
|
+
}
|
|
2095
|
+
case 'excludeUpdate': {
|
|
2096
|
+
actionNodes.push(factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')), factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation')));
|
|
2097
|
+
break;
|
|
2098
|
+
}
|
|
2099
|
+
case 'excludeRemove': {
|
|
2100
|
+
actionNodes.push(factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')));
|
|
2101
|
+
break;
|
|
2102
|
+
}
|
|
2103
|
+
case 'appendOnly': {
|
|
2104
|
+
actionNodes.push(factory.createTypeReferenceNode(createForeignRef(entity, one, 'CreateSingleOperation')));
|
|
2105
|
+
break;
|
|
2106
|
+
}
|
|
2107
|
+
case 'readOnly': {
|
|
2108
|
+
break;
|
|
2109
|
+
}
|
|
2110
|
+
default: {
|
|
2111
|
+
(0, assert_1.default)(false);
|
|
2112
|
+
}
|
|
2113
|
+
}
|
|
2114
|
+
}
|
|
2115
|
+
if (actionNodes.length > 0) {
|
|
2116
|
+
reverseOneNodes_1.push(factory.createTypeLiteralNode([
|
|
2117
|
+
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode(actionNodes)),
|
|
2118
|
+
factory.createPropertySignature(undefined, factory.createIdentifier('entityId'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword)),
|
|
2119
|
+
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword))
|
|
2120
|
+
]));
|
|
2121
|
+
}
|
|
1972
2122
|
}
|
|
1973
2123
|
}
|
|
1974
2124
|
catch (e_15_1) { e_15 = { error: e_15_1 }; }
|
|
@@ -1982,7 +2132,7 @@ function constructActions(statements, entity) {
|
|
|
1982
2132
|
// 如果是base,要包容更多可能的反指
|
|
1983
2133
|
refEntityLitrals.push(factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
1984
2134
|
}
|
|
1985
|
-
|
|
2135
|
+
reverseOneNodes_1.push(factory.createTypeLiteralNode([
|
|
1986
2136
|
factory.createPropertySignature(undefined, factory.createIdentifier('entity'), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
1987
2137
|
factory.createUnionTypeNode(refEntityLitrals),
|
|
1988
2138
|
factory.createLiteralTypeNode(factory.createNull())
|
|
@@ -1993,8 +2143,8 @@ function constructActions(statements, entity) {
|
|
|
1993
2143
|
]))
|
|
1994
2144
|
]));
|
|
1995
2145
|
}
|
|
1996
|
-
if (
|
|
1997
|
-
adNodes.push(factory.createUnionTypeNode(
|
|
2146
|
+
if (reverseOneNodes_1.length > 0) {
|
|
2147
|
+
adNodes.push(factory.createUnionTypeNode(reverseOneNodes_1));
|
|
1998
2148
|
}
|
|
1999
2149
|
}
|
|
2000
2150
|
var propertySignatures2 = [];
|
|
@@ -2016,22 +2166,70 @@ function constructActions(statements, entity) {
|
|
|
2016
2166
|
factory.createLiteralTypeNode(factory.createStringLiteral("".concat(foreignKey, "Id")))
|
|
2017
2167
|
])
|
|
2018
2168
|
]);
|
|
2019
|
-
var
|
|
2169
|
+
var otmCreateSingleOperationNode = factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
2020
2170
|
factory.createLiteralTypeNode(factory.createStringLiteral("create")),
|
|
2021
|
-
|
|
2022
|
-
otmCreateOperationDataNode,
|
|
2023
|
-
factory.createArrayTypeNode(otmCreateOperationDataNode)
|
|
2024
|
-
])
|
|
2171
|
+
otmCreateOperationDataNode
|
|
2025
2172
|
]);
|
|
2026
|
-
|
|
2027
|
-
factory.
|
|
2028
|
-
factory.
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2173
|
+
var otmCreateMultipleOperationNode = factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
2174
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("create")),
|
|
2175
|
+
factory.createArrayTypeNode(otmCreateOperationDataNode)
|
|
2176
|
+
]);
|
|
2177
|
+
var otmUpdateOperationNode = factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'UpdateOperation'), undefined);
|
|
2178
|
+
var otmRemoveOperationNode = factory.createTypeReferenceNode(createForeignRef(entity, entityName, 'RemoveOperation'), undefined);
|
|
2179
|
+
if (!Schema[entityName].static) {
|
|
2180
|
+
switch (Schema[entityName].actionType) {
|
|
2181
|
+
case 'crud': {
|
|
2182
|
+
propertySignatures2.push(factory.createPropertySignature(undefined, factory.createIdentifier(identifier), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2183
|
+
otmUpdateOperationNode,
|
|
2184
|
+
otmRemoveOperationNode,
|
|
2185
|
+
otmCreateMultipleOperationNode,
|
|
2186
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Array"), [factory.createUnionTypeNode([
|
|
2187
|
+
otmCreateSingleOperationNode,
|
|
2188
|
+
otmUpdateOperationNode,
|
|
2189
|
+
otmRemoveOperationNode
|
|
2190
|
+
])])
|
|
2191
|
+
])));
|
|
2192
|
+
break;
|
|
2193
|
+
}
|
|
2194
|
+
case 'excludeUpdate': {
|
|
2195
|
+
propertySignatures2.push(factory.createPropertySignature(undefined, factory.createIdentifier(identifier), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2196
|
+
otmRemoveOperationNode,
|
|
2197
|
+
otmCreateMultipleOperationNode,
|
|
2198
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Array"), [factory.createUnionTypeNode([
|
|
2199
|
+
otmCreateSingleOperationNode,
|
|
2200
|
+
otmRemoveOperationNode
|
|
2201
|
+
])])
|
|
2202
|
+
])));
|
|
2203
|
+
break;
|
|
2204
|
+
}
|
|
2205
|
+
case 'excludeRemove': {
|
|
2206
|
+
propertySignatures2.push(factory.createPropertySignature(undefined, factory.createIdentifier(identifier), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2207
|
+
otmUpdateOperationNode,
|
|
2208
|
+
otmCreateMultipleOperationNode,
|
|
2209
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Array"), [factory.createUnionTypeNode([
|
|
2210
|
+
otmCreateSingleOperationNode,
|
|
2211
|
+
otmUpdateOperationNode
|
|
2212
|
+
])])
|
|
2213
|
+
])));
|
|
2214
|
+
break;
|
|
2215
|
+
}
|
|
2216
|
+
case 'appendOnly': {
|
|
2217
|
+
propertySignatures2.push(factory.createPropertySignature(undefined, factory.createIdentifier(identifier), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2218
|
+
otmCreateMultipleOperationNode,
|
|
2219
|
+
factory.createTypeReferenceNode(factory.createIdentifier("Array"), [factory.createUnionTypeNode([
|
|
2220
|
+
otmCreateSingleOperationNode
|
|
2221
|
+
])])
|
|
2222
|
+
])));
|
|
2223
|
+
break;
|
|
2224
|
+
}
|
|
2225
|
+
case 'readOnly': {
|
|
2226
|
+
break;
|
|
2227
|
+
}
|
|
2228
|
+
default: {
|
|
2229
|
+
(0, assert_1.default)(false);
|
|
2230
|
+
}
|
|
2231
|
+
}
|
|
2232
|
+
}
|
|
2035
2233
|
});
|
|
2036
2234
|
};
|
|
2037
2235
|
for (var entityName in foreignKeySet) {
|
|
@@ -2043,13 +2241,17 @@ function constructActions(statements, entity) {
|
|
|
2043
2241
|
}
|
|
2044
2242
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("UpdateOperationData"), undefined, factory.createIntersectionTypeNode(adNodes)));
|
|
2045
2243
|
// UpdateOperation
|
|
2244
|
+
var actionTypeNodes = ActionAsts[entity] ? [
|
|
2245
|
+
factory.createTypeReferenceNode('ParticularAction'),
|
|
2246
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("update"))
|
|
2247
|
+
] : [
|
|
2248
|
+
factory.createLiteralTypeNode(factory.createStringLiteral("update"))
|
|
2249
|
+
];
|
|
2250
|
+
if (process.env.COMPLING_AS_LIB) {
|
|
2251
|
+
actionTypeNodes.push(factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
|
|
2252
|
+
}
|
|
2046
2253
|
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier("UpdateOperation"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("OakOperation"), [
|
|
2047
|
-
|
|
2048
|
-
factory.createUnionTypeNode([
|
|
2049
|
-
factory.createTypeReferenceNode('ParticularAction'),
|
|
2050
|
-
factory.createLiteralTypeNode(factory.createStringLiteral("update"))
|
|
2051
|
-
]) :
|
|
2052
|
-
factory.createLiteralTypeNode(factory.createStringLiteral("update")),
|
|
2254
|
+
factory.createUnionTypeNode(actionTypeNodes),
|
|
2053
2255
|
factory.createTypeReferenceNode(factory.createIdentifier("UpdateOperationData")),
|
|
2054
2256
|
factory.createTypeReferenceNode(factory.createIdentifier("Filter"), undefined),
|
|
2055
2257
|
factory.createTypeReferenceNode(factory.createIdentifier("Sorter"), undefined)
|
|
@@ -2066,17 +2268,47 @@ function constructActions(statements, entity) {
|
|
|
2066
2268
|
*/
|
|
2067
2269
|
var upsertOneNodes = [];
|
|
2068
2270
|
try {
|
|
2069
|
-
for (var manyToOneSet_6 = __values(manyToOneSet), manyToOneSet_6_1 = manyToOneSet_6.next(); !manyToOneSet_6_1.done; manyToOneSet_6_1 = manyToOneSet_6.next()) {
|
|
2271
|
+
for (var manyToOneSet_6 = tslib_1.__values(manyToOneSet), manyToOneSet_6_1 = manyToOneSet_6.next(); !manyToOneSet_6_1.done; manyToOneSet_6_1 = manyToOneSet_6.next()) {
|
|
2070
2272
|
var one = manyToOneSet_6_1.value;
|
|
2071
2273
|
if (!ReversePointerRelations[entity] || !ReversePointerRelations[entity].includes(one[0])) {
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2274
|
+
if (!Schema[one[0]].static) {
|
|
2275
|
+
switch (Schema[one[0]].actionType) {
|
|
2276
|
+
case 'crud': {
|
|
2277
|
+
upsertOneNodes.push(factory.createUnionTypeNode([
|
|
2278
|
+
factory.createTypeLiteralNode([
|
|
2279
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2280
|
+
factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'UpdateOperation')),
|
|
2281
|
+
factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'RemoveOperation'))
|
|
2282
|
+
]))
|
|
2283
|
+
])
|
|
2284
|
+
]));
|
|
2285
|
+
break;
|
|
2286
|
+
}
|
|
2287
|
+
case 'excludeUpdate': {
|
|
2288
|
+
upsertOneNodes.push(factory.createUnionTypeNode([
|
|
2289
|
+
factory.createTypeLiteralNode([
|
|
2290
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'RemoveOperation')))
|
|
2291
|
+
])
|
|
2292
|
+
]));
|
|
2293
|
+
break;
|
|
2294
|
+
}
|
|
2295
|
+
case 'excludeRemove': {
|
|
2296
|
+
upsertOneNodes.push(factory.createUnionTypeNode([
|
|
2297
|
+
factory.createTypeLiteralNode([
|
|
2298
|
+
factory.createPropertySignature(undefined, factory.createIdentifier(one[1]), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one[0], 'UpdateOperation')))
|
|
2299
|
+
])
|
|
2300
|
+
]));
|
|
2301
|
+
break;
|
|
2302
|
+
}
|
|
2303
|
+
case 'appendOnly':
|
|
2304
|
+
case 'readOnly': {
|
|
2305
|
+
break;
|
|
2306
|
+
}
|
|
2307
|
+
default: {
|
|
2308
|
+
(0, assert_1.default)(false);
|
|
2309
|
+
}
|
|
2310
|
+
}
|
|
2311
|
+
}
|
|
2080
2312
|
}
|
|
2081
2313
|
}
|
|
2082
2314
|
}
|
|
@@ -2087,18 +2319,45 @@ function constructActions(statements, entity) {
|
|
|
2087
2319
|
}
|
|
2088
2320
|
finally { if (e_16) throw e_16.error; }
|
|
2089
2321
|
}
|
|
2090
|
-
var
|
|
2322
|
+
var reverseOneNodes_2 = [];
|
|
2091
2323
|
if (ReversePointerRelations[entity]) {
|
|
2092
2324
|
var refEntityLitrals = [];
|
|
2093
2325
|
try {
|
|
2094
|
-
for (var _u = __values(ReversePointerRelations[entity]), _v = _u.next(); !_v.done; _v = _u.next()) {
|
|
2326
|
+
for (var _u = tslib_1.__values(ReversePointerRelations[entity]), _v = _u.next(); !_v.done; _v = _u.next()) {
|
|
2095
2327
|
var one = _v.value;
|
|
2096
2328
|
refEntityLitrals.push(factory.createLiteralTypeNode(factory.createStringLiteral("".concat((0, string_1.firstLetterLowerCase)(one)))));
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2329
|
+
if (!Schema[one].static) {
|
|
2330
|
+
switch (Schema[one].actionType) {
|
|
2331
|
+
case 'crud': {
|
|
2332
|
+
reverseOneNodes_2.push(factory.createTypeLiteralNode([
|
|
2333
|
+
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode([
|
|
2334
|
+
factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')),
|
|
2335
|
+
factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation'))
|
|
2336
|
+
]))
|
|
2337
|
+
]));
|
|
2338
|
+
break;
|
|
2339
|
+
}
|
|
2340
|
+
case 'excludeUpdate': {
|
|
2341
|
+
reverseOneNodes_2.push(factory.createTypeLiteralNode([
|
|
2342
|
+
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'RemoveOperation')))
|
|
2343
|
+
]));
|
|
2344
|
+
break;
|
|
2345
|
+
}
|
|
2346
|
+
case 'excludeRemove': {
|
|
2347
|
+
reverseOneNodes_2.push(factory.createTypeLiteralNode([
|
|
2348
|
+
factory.createPropertySignature(undefined, factory.createIdentifier((0, string_1.firstLetterLowerCase)(one)), factory.createToken(ts.SyntaxKind.QuestionToken), factory.createTypeReferenceNode(createForeignRef(entity, one, 'UpdateOperation')))
|
|
2349
|
+
]));
|
|
2350
|
+
break;
|
|
2351
|
+
}
|
|
2352
|
+
case 'appendOnly':
|
|
2353
|
+
case 'readOnly': {
|
|
2354
|
+
break;
|
|
2355
|
+
}
|
|
2356
|
+
default: {
|
|
2357
|
+
(0, assert_1.default)(false);
|
|
2358
|
+
}
|
|
2359
|
+
}
|
|
2360
|
+
}
|
|
2102
2361
|
}
|
|
2103
2362
|
}
|
|
2104
2363
|
catch (e_17_1) { e_17 = { error: e_17_1 }; }
|
|
@@ -2109,7 +2368,7 @@ function constructActions(statements, entity) {
|
|
|
2109
2368
|
finally { if (e_17) throw e_17.error; }
|
|
2110
2369
|
}
|
|
2111
2370
|
if (process.env.COMPLING_AS_LIB) {
|
|
2112
|
-
|
|
2371
|
+
reverseOneNodes_2.push(factory.createTypeLiteralNode([
|
|
2113
2372
|
factory.createIndexSignature(undefined, undefined, [factory.createParameterDeclaration(undefined, undefined, undefined, factory.createIdentifier("k"), undefined, factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), undefined)], factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword))
|
|
2114
2373
|
]));
|
|
2115
2374
|
}
|
|
@@ -2117,8 +2376,8 @@ function constructActions(statements, entity) {
|
|
|
2117
2376
|
if (upsertOneNodes.length > 0) {
|
|
2118
2377
|
adNodes.push(factory.createIntersectionTypeNode(upsertOneNodes));
|
|
2119
2378
|
}
|
|
2120
|
-
if (
|
|
2121
|
-
adNodes.push(factory.createUnionTypeNode(
|
|
2379
|
+
if (reverseOneNodes_2.length > 0) {
|
|
2380
|
+
adNodes.push(factory.createUnionTypeNode(reverseOneNodes_2));
|
|
2122
2381
|
}
|
|
2123
2382
|
}
|
|
2124
2383
|
/**
|
|
@@ -2250,13 +2509,14 @@ var initialStatements = function () { return [
|
|
|
2250
2509
|
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
2251
2510
|
factory.createImportSpecifier(false, undefined, factory.createIdentifier("FormCreateData")),
|
|
2252
2511
|
factory.createImportSpecifier(false, undefined, factory.createIdentifier("FormUpdateData")),
|
|
2253
|
-
factory.createImportSpecifier(false, factory.createIdentifier("Operation"), factory.createIdentifier("OakOperation"))
|
|
2512
|
+
factory.createImportSpecifier(false, factory.createIdentifier("Operation"), factory.createIdentifier("OakOperation")),
|
|
2513
|
+
factory.createImportSpecifier(false, factory.createIdentifier("MakeAction"), factory.createIdentifier("OakMakeAction"))
|
|
2254
2514
|
])), factory.createStringLiteral("".concat((0, env_1.TYPE_PATH_IN_OAK_DOMAIN)(), "Entity")), undefined)
|
|
2255
2515
|
]; };
|
|
2256
2516
|
function outputSubQuery(outputDir, printer) {
|
|
2257
2517
|
var statements = [];
|
|
2258
2518
|
if (process.env.COMPLING_AS_LIB) {
|
|
2259
|
-
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("Selection"))])), factory.createStringLiteral(
|
|
2519
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("Selection"))])), factory.createStringLiteral((0, env_1.TYPE_PATH_IN_OAK_DOMAIN)(1)), undefined));
|
|
2260
2520
|
}
|
|
2261
2521
|
for (var entity in Schema) {
|
|
2262
2522
|
// import * as User from '../User/Schema';
|
|
@@ -2267,10 +2527,10 @@ function outputSubQuery(outputDir, printer) {
|
|
|
2267
2527
|
var identifier = "".concat(one, "IdSubQuery");
|
|
2268
2528
|
var fromEntites = OneToMany[one] ? (0, lodash_1.uniq)(OneToMany[one]
|
|
2269
2529
|
.filter(function (_a) {
|
|
2270
|
-
var _b = __read(_a, 2), e = _b[0], f = _b[1];
|
|
2530
|
+
var _b = tslib_1.__read(_a, 2), e = _b[0], f = _b[1];
|
|
2271
2531
|
return f !== 'entity';
|
|
2272
2532
|
}).map(function (_a) {
|
|
2273
|
-
var _b = __read(_a, 1), e = _b[0];
|
|
2533
|
+
var _b = tslib_1.__read(_a, 1), e = _b[0];
|
|
2274
2534
|
return e;
|
|
2275
2535
|
})) : [];
|
|
2276
2536
|
fromEntites.push(one);
|
|
@@ -2282,7 +2542,7 @@ function outputSubQuery(outputDir, printer) {
|
|
|
2282
2542
|
// 如果是建立 base,这里要加上额外可能的对象信息
|
|
2283
2543
|
inUnionTypeNode.push(factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword));
|
|
2284
2544
|
}
|
|
2285
|
-
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier(identifier), undefined, factory.createMappedTypeNode(undefined, factory.createTypeParameterDeclaration(factory.createIdentifier("K"), factory.createUnionTypeNode([
|
|
2545
|
+
statements.push(factory.createTypeAliasDeclaration(undefined, [factory.createModifier(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier(identifier), undefined, factory.createMappedTypeNode(undefined, factory.createTypeParameterDeclaration(undefined, factory.createIdentifier("K"), factory.createUnionTypeNode([
|
|
2286
2546
|
factory.createLiteralTypeNode(factory.createStringLiteral("$in")),
|
|
2287
2547
|
factory.createLiteralTypeNode(factory.createStringLiteral("$nin"))
|
|
2288
2548
|
]), undefined), undefined, factory.createToken(ts.SyntaxKind.QuestionToken), factory.createUnionTypeNode(inUnionTypeNode), undefined)));
|
|
@@ -2343,7 +2603,13 @@ function outputSchema(outputDir, printer) {
|
|
|
2343
2603
|
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports(localActions.map(function (ele) { return factory.createImportSpecifier(false, undefined, factory.createIdentifier(ele)); }))), factory.createStringLiteral('./Action'), undefined));
|
|
2344
2604
|
}
|
|
2345
2605
|
else {
|
|
2346
|
-
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
2606
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
|
|
2607
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("GenericAction")),
|
|
2608
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("AppendOnlyAction")),
|
|
2609
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("ReadOnlyAction")),
|
|
2610
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("ExcludeUpdateAction")),
|
|
2611
|
+
factory.createImportSpecifier(false, undefined, factory.createIdentifier("ExcludeRemoveAction")),
|
|
2612
|
+
])), factory.createStringLiteral((0, env_1.ACTION_CONSTANT_IN_OAK_DOMAIN)()), undefined));
|
|
2347
2613
|
}
|
|
2348
2614
|
constructSchema(statements, entity);
|
|
2349
2615
|
constructFilter(statements, entity);
|
|
@@ -2352,10 +2618,17 @@ function outputSchema(outputDir, printer) {
|
|
|
2352
2618
|
constructActions(statements, entity);
|
|
2353
2619
|
constructQuery(statements, entity);
|
|
2354
2620
|
constructFullAttrs(statements, entity);
|
|
2621
|
+
var actionTypeNode = factory.createTypeReferenceNode(factory.createIdentifier('OakMakeAction'), [
|
|
2622
|
+
ActionAsts[entity] ? factory.createTypeReferenceNode('Action') : factory.createTypeReferenceNode(OriginActionDict[Schema[entity].actionType])
|
|
2623
|
+
]);
|
|
2355
2624
|
var EntityDefAttrs = [
|
|
2356
2625
|
factory.createPropertySignature(undefined, factory.createIdentifier("Schema"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Schema"), undefined)),
|
|
2357
2626
|
factory.createPropertySignature(undefined, factory.createIdentifier("OpSchema"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("OpSchema"), undefined)),
|
|
2358
|
-
factory.createPropertySignature(undefined, factory.createIdentifier("Action"), undefined,
|
|
2627
|
+
factory.createPropertySignature(undefined, factory.createIdentifier("Action"), undefined, process.env.COMPLING_AS_LIB ?
|
|
2628
|
+
factory.createUnionTypeNode([
|
|
2629
|
+
actionTypeNode,
|
|
2630
|
+
factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword)
|
|
2631
|
+
]) : actionTypeNode),
|
|
2359
2632
|
factory.createPropertySignature(undefined, factory.createIdentifier("Selection"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Selection"), undefined)),
|
|
2360
2633
|
factory.createPropertySignature(undefined, factory.createIdentifier("Operation"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("Operation"), undefined)),
|
|
2361
2634
|
factory.createPropertySignature(undefined, factory.createIdentifier("Create"), undefined, factory.createTypeReferenceNode(factory.createIdentifier("CreateOperation"), undefined)),
|
|
@@ -2479,7 +2752,7 @@ function constructAttributes(entity) {
|
|
|
2479
2752
|
default: {
|
|
2480
2753
|
var text2_6 = text === 'Schema' ? entity : text;
|
|
2481
2754
|
var manyToOneItem = manyToOneSet && manyToOneSet.find(function (_a) {
|
|
2482
|
-
var _b = __read(_a, 2), refEntity = _b[0], attrName = _b[1];
|
|
2755
|
+
var _b = tslib_1.__read(_a, 2), refEntity = _b[0], attrName = _b[1];
|
|
2483
2756
|
return refEntity === text2_6 && attrName === attrName;
|
|
2484
2757
|
});
|
|
2485
2758
|
if (manyToOneItem) {
|
|
@@ -2619,23 +2892,55 @@ function outputLocale(outputDir, printer) {
|
|
|
2619
2892
|
}
|
|
2620
2893
|
function outputStorage(outputDir, printer) {
|
|
2621
2894
|
var importStatements = [
|
|
2622
|
-
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("StorageSchema"))])), factory.createStringLiteral("".concat((0, env_1.TYPE_PATH_IN_OAK_DOMAIN)(), "Storage")), undefined),
|
|
2895
|
+
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("StorageSchema"))])), factory.createStringLiteral("".concat((0, env_1.TYPE_PATH_IN_OAK_DOMAIN)(1), "Storage")), undefined),
|
|
2623
2896
|
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("EntityDict"))])), factory.createStringLiteral("./EntityDict"), undefined)
|
|
2624
2897
|
];
|
|
2625
2898
|
var entityAssignments = [];
|
|
2626
2899
|
for (var entity in Schema) {
|
|
2627
2900
|
var indexExpressions = [];
|
|
2628
|
-
var _a = Schema[entity], sourceFile = _a.sourceFile,
|
|
2901
|
+
var _a = Schema[entity], sourceFile = _a.sourceFile, inModi = _a.inModi, indexes = _a.indexes, toModi = _a.toModi, actionType = _a.actionType, _static = _a.static;
|
|
2629
2902
|
var statements = [
|
|
2630
2903
|
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("StorageDesc"))])), factory.createStringLiteral("".concat((0, env_1.TYPE_PATH_IN_OAK_DOMAIN)(), "Storage")), undefined),
|
|
2631
2904
|
factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("OpSchema"))])), factory.createStringLiteral("./Schema"), undefined)
|
|
2632
2905
|
];
|
|
2906
|
+
switch (actionType) {
|
|
2907
|
+
case 'readOnly': {
|
|
2908
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, factory.createIdentifier("readOnlyActions"), factory.createIdentifier("actions"))])), factory.createStringLiteral((0, env_1.ACTION_CONSTANT_IN_OAK_DOMAIN)()), undefined));
|
|
2909
|
+
break;
|
|
2910
|
+
}
|
|
2911
|
+
case 'appendOnly': {
|
|
2912
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, factory.createIdentifier("appendOnlyActions"), factory.createIdentifier("actions"))])), factory.createStringLiteral((0, env_1.ACTION_CONSTANT_IN_OAK_DOMAIN)()), undefined));
|
|
2913
|
+
break;
|
|
2914
|
+
}
|
|
2915
|
+
case 'excludeUpdate': {
|
|
2916
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, factory.createIdentifier("excludeUpdateActions"), factory.createIdentifier("actions"))])), factory.createStringLiteral((0, env_1.ACTION_CONSTANT_IN_OAK_DOMAIN)()), undefined));
|
|
2917
|
+
break;
|
|
2918
|
+
}
|
|
2919
|
+
default: {
|
|
2920
|
+
if (ActionAsts[entity]) {
|
|
2921
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier("actions"))])), factory.createStringLiteral("./Action"), undefined));
|
|
2922
|
+
}
|
|
2923
|
+
else {
|
|
2924
|
+
statements.push(factory.createImportDeclaration(undefined, undefined, factory.createImportClause(false, undefined, factory.createNamedImports([factory.createImportSpecifier(false, factory.createIdentifier("genericActions"), factory.createIdentifier("actions"))])), factory.createStringLiteral((0, env_1.ACTION_CONSTANT_IN_OAK_DOMAIN)()), undefined));
|
|
2925
|
+
}
|
|
2926
|
+
}
|
|
2927
|
+
}
|
|
2633
2928
|
var propertyAssignments = [];
|
|
2634
2929
|
var attributes = constructAttributes(entity);
|
|
2635
2930
|
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("attributes"), factory.createObjectLiteralExpression(attributes, true)));
|
|
2636
2931
|
if (indexes) {
|
|
2637
|
-
indexExpressions.push.apply(indexExpressions, __spreadArray([], __read(indexes.elements), false));
|
|
2932
|
+
indexExpressions.push.apply(indexExpressions, tslib_1.__spreadArray([], tslib_1.__read(indexes.elements), false));
|
|
2933
|
+
}
|
|
2934
|
+
if (toModi) {
|
|
2935
|
+
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("toModi"), factory.createTrue()));
|
|
2936
|
+
}
|
|
2937
|
+
if (inModi) {
|
|
2938
|
+
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("inModi"), factory.createTrue()));
|
|
2939
|
+
}
|
|
2940
|
+
if (_static || actionType === 'readOnly') {
|
|
2941
|
+
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("static"), factory.createTrue()));
|
|
2638
2942
|
}
|
|
2943
|
+
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("actionType"), factory.createStringLiteral(actionType)), factory.createShorthandPropertyAssignment(factory.createIdentifier("actions"), undefined));
|
|
2639
2944
|
if (indexExpressions.length > 0) {
|
|
2640
2945
|
propertyAssignments.push(factory.createPropertyAssignment(factory.createIdentifier("indexes"), factory.createArrayLiteralExpression(indexExpressions, true)));
|
|
2641
2946
|
}
|
|
@@ -2672,7 +2977,7 @@ function addReverseRelationship() {
|
|
|
2672
2977
|
throw new Error("\u300C".concat(reverseEntity, "\u300D\u88AB\u5F15\u7528\u4E3A\u4E00\u4E2A\u53CD\u6307\u5BF9\u8C61\uFF0C\u4F46\u5176\u5B9A\u4E49\u4E2D\u7684entity\u548CentityId\u4E0D\u7B26\u5408\u8981\u6C42"));
|
|
2673
2978
|
}
|
|
2674
2979
|
try {
|
|
2675
|
-
for (var _b = (e_18 = void 0, __values(ReversePointerRelations[reverseEntity])), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
2980
|
+
for (var _b = (e_18 = void 0, tslib_1.__values(ReversePointerRelations[reverseEntity])), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
2676
2981
|
var one = _c.value;
|
|
2677
2982
|
addRelationship(reverseEntity, one, 'entity', false);
|
|
2678
2983
|
}
|
|
@@ -2686,25 +2991,52 @@ function addReverseRelationship() {
|
|
|
2686
2991
|
}
|
|
2687
2992
|
}
|
|
2688
2993
|
}
|
|
2994
|
+
function outputIndexTs(outputDir) {
|
|
2995
|
+
var indexTs = "export * from './EntityDict';\n export * from './Storage';\n export * from './ActionDefDict';\n ";
|
|
2996
|
+
var filename = path_1.default.join(outputDir, 'index.ts');
|
|
2997
|
+
(0, fs_1.writeFileSync)(filename, indexTs, { flag: 'w' });
|
|
2998
|
+
}
|
|
2689
2999
|
function outputPackageJson(outputDir) {
|
|
2690
3000
|
var pj = {
|
|
2691
3001
|
"name": process.env.COMPLING_AS_LIB ? "general-app-domain" : "oak-app-domain",
|
|
2692
3002
|
"main": "index.ts"
|
|
2693
3003
|
};
|
|
2694
|
-
var
|
|
2695
|
-
var filename = path_1.default.join(outputDir, 'index.ts');
|
|
2696
|
-
(0, fs_1.writeFileSync)(filename, indexTs, { flag: 'w' });
|
|
2697
|
-
filename = path_1.default.join(outputDir, 'package.json');
|
|
3004
|
+
var filename = path_1.default.join(outputDir, 'package.json');
|
|
2698
3005
|
(0, fs_1.writeFileSync)(filename, JSON.stringify(pj), { flag: 'w' });
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
3006
|
+
}
|
|
3007
|
+
/**
|
|
3008
|
+
* (从toModi的对象开始)分析可能被modi指向的对象
|
|
3009
|
+
*/
|
|
3010
|
+
function analyzeInModi() {
|
|
3011
|
+
var getRelateEntities = function (entity) {
|
|
3012
|
+
var result = [];
|
|
3013
|
+
if (ManyToOne[entity]) {
|
|
3014
|
+
// 用反指指针指向的对象可以忽略,因为前端不可能设计出这样的更新页面
|
|
3015
|
+
result = ManyToOne[entity].filter(function (ele) { return ele[1] !== 'entity'; }).map(function (ele) { return ele[0]; });
|
|
3016
|
+
}
|
|
3017
|
+
if (OneToMany[entity]) {
|
|
3018
|
+
result.push.apply(result, tslib_1.__spreadArray([], tslib_1.__read(OneToMany[entity].map(function (ele) { return ele[0]; })), false));
|
|
3019
|
+
}
|
|
3020
|
+
return (0, lodash_1.uniq)(result);
|
|
3021
|
+
};
|
|
3022
|
+
var setInModi = function (entity) {
|
|
3023
|
+
if (['Modi', 'ModiEntity', 'Oper', 'OperEntity', 'User'].includes(entity)) {
|
|
3024
|
+
return;
|
|
3025
|
+
}
|
|
3026
|
+
var schema = Schema[entity];
|
|
3027
|
+
if (schema.toModi || schema.inModi || schema.actionType === 'readOnly' || schema.static) {
|
|
3028
|
+
return;
|
|
3029
|
+
}
|
|
3030
|
+
schema.inModi = true;
|
|
3031
|
+
var related = getRelateEntities(entity);
|
|
3032
|
+
related.forEach(function (ele) { return setInModi(ele); });
|
|
3033
|
+
};
|
|
3034
|
+
for (var entity in Schema) {
|
|
3035
|
+
if (Schema[entity].toModi) {
|
|
3036
|
+
var related = getRelateEntities(entity);
|
|
3037
|
+
related.forEach(function (ele) { return setInModi(ele); });
|
|
3038
|
+
}
|
|
2704
3039
|
}
|
|
2705
|
-
catch (err) {
|
|
2706
|
-
console.error(err);
|
|
2707
|
-
} */
|
|
2708
3040
|
}
|
|
2709
3041
|
function analyzeEntities(inputDir) {
|
|
2710
3042
|
var files = (0, fs_1.readdirSync)(inputDir);
|
|
@@ -2719,6 +3051,7 @@ function analyzeEntities(inputDir) {
|
|
|
2719
3051
|
files.forEach(function (filename) {
|
|
2720
3052
|
analyzeEntity(filename, inputDir, program);
|
|
2721
3053
|
});
|
|
3054
|
+
analyzeInModi();
|
|
2722
3055
|
}
|
|
2723
3056
|
exports.analyzeEntities = analyzeEntities;
|
|
2724
3057
|
function buildSchema(outputDir) {
|
|
@@ -2731,8 +3064,9 @@ function buildSchema(outputDir) {
|
|
|
2731
3064
|
outputAction(outputDir, printer);
|
|
2732
3065
|
outputEntityDict(outputDir, printer);
|
|
2733
3066
|
outputStorage(outputDir, printer);
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
3067
|
+
outputIndexTs(outputDir);
|
|
3068
|
+
if (!process.env.COMPLING_AS_LIB) {
|
|
3069
|
+
outputPackageJson(outputDir);
|
|
3070
|
+
}
|
|
2737
3071
|
}
|
|
2738
3072
|
exports.buildSchema = buildSchema;
|