@steedos/objectql 3.0.13-beta.3 → 3.0.13-beta.30
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/actions/field_updates.js +84 -153
- package/lib/actions/field_updates.js.map +1 -1
- package/lib/actions/index.js +1 -1
- package/lib/actions/workflow_notifications.js +50 -111
- package/lib/actions/workflow_notifications.js.map +1 -1
- package/lib/actions/workflow_outbound_messages.js +43 -94
- package/lib/actions/workflow_outbound_messages.js.map +1 -1
- package/lib/actions/workflow_rule.js +80 -177
- package/lib/actions/workflow_rule.js.map +1 -1
- package/lib/broker.js +19 -49
- package/lib/broker.js.map +1 -1
- package/lib/driver/field-encrytion/index.js +1 -1
- package/lib/driver/field-encrytion/mongosharedconst.js +17 -17
- package/lib/driver/field-encrytion/mongosharedconst.js.map +1 -1
- package/lib/driver/format.js +3 -3
- package/lib/driver/format.js.map +1 -1
- package/lib/driver/index.js +1 -1
- package/lib/driver/metadata.js +283 -387
- package/lib/driver/metadata.js.map +1 -1
- package/lib/driver/metadataOld.js +104 -105
- package/lib/driver/metadataOld.js.map +1 -1
- package/lib/driver/meteorMongo.js +5 -8
- package/lib/driver/meteorMongo.js.map +1 -1
- package/lib/driver/mongo.js +321 -506
- package/lib/driver/mongo.js.map +1 -1
- package/lib/driver/mysql.js +16 -20
- package/lib/driver/mysql.js.map +1 -1
- package/lib/driver/oracle.js +25 -38
- package/lib/driver/oracle.js.map +1 -1
- package/lib/driver/postgres.js +16 -20
- package/lib/driver/postgres.js.map +1 -1
- package/lib/driver/sqlite3.js +15 -19
- package/lib/driver/sqlite3.js.map +1 -1
- package/lib/driver/sqlserver.js +20 -33
- package/lib/driver/sqlserver.js.map +1 -1
- package/lib/errors/index.js +10 -11
- package/lib/errors/index.js.map +1 -1
- package/lib/formula/core.js +307 -594
- package/lib/formula/core.js.map +1 -1
- package/lib/formula/field_formula.js +80 -126
- package/lib/formula/field_formula.js.map +1 -1
- package/lib/formula/index.js +56 -97
- package/lib/formula/index.js.map +1 -1
- package/lib/formula/params.js +11 -11
- package/lib/formula/params.js.map +1 -1
- package/lib/formula/recompute.js +41 -166
- package/lib/formula/recompute.js.map +1 -1
- package/lib/formula/simple_params.js +12 -12
- package/lib/formula/simple_params.js.map +1 -1
- package/lib/formula/util.js +43 -67
- package/lib/formula/util.js.map +1 -1
- package/lib/functions/function.js +62 -87
- package/lib/functions/function.js.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/services/datasourceServiceFactory.js +77 -111
- package/lib/services/datasourceServiceFactory.js.map +1 -1
- package/lib/services/index.js +3 -3
- package/lib/services/index.js.map +1 -1
- package/lib/summary/core.js +162 -355
- package/lib/summary/core.js.map +1 -1
- package/lib/summary/field_summary.js +44 -71
- package/lib/summary/field_summary.js.map +1 -1
- package/lib/summary/index.js +65 -80
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/recompute.js +19 -47
- package/lib/summary/recompute.js.map +1 -1
- package/lib/triggers/trigger.js +101 -142
- package/lib/triggers/trigger.js.map +1 -1
- package/lib/ts-types/index.js +1 -1
- package/lib/typeorm/driver.js +250 -450
- package/lib/typeorm/driver.js.map +1 -1
- package/lib/typeorm/index.js +1 -1
- package/lib/typeorm/util.js +28 -28
- package/lib/typeorm/util.js.map +1 -1
- package/lib/types/action.js +24 -33
- package/lib/types/action.js.map +1 -1
- package/lib/types/app.js +210 -355
- package/lib/types/app.js.map +1 -1
- package/lib/types/connection.js +42 -78
- package/lib/types/connection.js.map +1 -1
- package/lib/types/dashboard.js +56 -77
- package/lib/types/dashboard.js.map +1 -1
- package/lib/types/datasource.js +359 -705
- package/lib/types/datasource.js.map +1 -1
- package/lib/types/defaultValue.js +53 -65
- package/lib/types/defaultValue.js.map +1 -1
- package/lib/types/field.js +165 -137
- package/lib/types/field.js.map +1 -1
- package/lib/types/field_permission.js +35 -66
- package/lib/types/field_permission.js.map +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/list_view.js +36 -43
- package/lib/types/list_view.js.map +1 -1
- package/lib/types/metadata.js +6 -6
- package/lib/types/metadata.js.map +1 -1
- package/lib/types/method_base.js +95 -128
- package/lib/types/method_base.js.map +1 -1
- package/lib/types/object.js +2005 -3015
- package/lib/types/object.js.map +1 -1
- package/lib/types/object_events.js +24 -37
- package/lib/types/object_events.js.map +1 -1
- package/lib/types/object_layouts.js +15 -38
- package/lib/types/object_layouts.js.map +1 -1
- package/lib/types/object_permission.js +99 -85
- package/lib/types/object_permission.js.map +1 -1
- package/lib/types/report.js +70 -98
- package/lib/types/report.js.map +1 -1
- package/lib/types/restrictionRule.js +47 -96
- package/lib/types/restrictionRule.js.map +1 -1
- package/lib/types/schema.js +115 -177
- package/lib/types/schema.js.map +1 -1
- package/lib/types/shareRule.js +53 -102
- package/lib/types/shareRule.js.map +1 -1
- package/lib/types/trigger.js +43 -56
- package/lib/types/trigger.js.map +1 -1
- package/lib/types/validation_rules.js +18 -56
- package/lib/types/validation_rules.js.map +1 -1
- package/lib/util/convert.js +24 -24
- package/lib/util/convert.js.map +1 -1
- package/lib/util/field.js +16 -28
- package/lib/util/field.js.map +1 -1
- package/lib/util/function_expression.js +7 -8
- package/lib/util/function_expression.js.map +1 -1
- package/lib/util/index.js +79 -97
- package/lib/util/index.js.map +1 -1
- package/lib/util/locale.js +4 -4
- package/lib/util/locale.js.map +1 -1
- package/lib/util/permission_shares.js +7 -7
- package/lib/util/permission_shares.js.map +1 -1
- package/lib/util/suffix.js +19 -19
- package/lib/util/suffix.js.map +1 -1
- package/lib/util/transform.js +1 -1
- package/lib/validators/index.js +10 -10
- package/lib/validators/index.js.map +1 -1
- package/package.json +12 -12
package/lib/driver/metadata.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MetadataDriver = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var PERMISSIONS = {
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const mingo = require("mingo");
|
|
7
|
+
const clone = require("clone");
|
|
8
|
+
const _ = require("underscore");
|
|
9
|
+
const i18n_1 = require("@steedos/i18n");
|
|
10
|
+
const util_1 = require("../util");
|
|
11
|
+
const metadata_registrar_1 = require("@steedos/metadata-registrar");
|
|
12
|
+
const PERMISSIONS = {
|
|
14
13
|
allowEdit: false,
|
|
15
14
|
allowDelete: false,
|
|
16
15
|
allowRead: true,
|
|
17
16
|
};
|
|
18
|
-
|
|
17
|
+
const BASERECORD = {
|
|
19
18
|
is_system: true,
|
|
20
19
|
record_permissions: PERMISSIONS,
|
|
21
20
|
};
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const isAPIName = function (apiName, tableName) {
|
|
22
|
+
let reg = new RegExp("^[a-z]([a-z0-9]|_(?!_))*[a-z0-9]$");
|
|
24
23
|
if (tableName == "permission_fields") {
|
|
25
24
|
reg = new RegExp("^[a-z]([a-z0-9]|_(?!_)|\\.(?!\\.))*[a-z0-9]$");
|
|
26
25
|
}
|
|
@@ -33,77 +32,69 @@ var isAPIName = function (apiName, tableName) {
|
|
|
33
32
|
}
|
|
34
33
|
return true;
|
|
35
34
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
args_1[_i] = arguments[_i];
|
|
44
|
-
}
|
|
45
|
-
return tslib_1.__awaiter(_this, tslib_1.__spreadArray([], tslib_1.__read(args_1), false), void 0, function (skipDBObjects) {
|
|
46
|
-
var objects, md5, result;
|
|
47
|
-
var _this = this;
|
|
48
|
-
if (skipDBObjects === void 0) { skipDBObjects = false; }
|
|
49
|
-
return tslib_1.__generator(this, function (_a) {
|
|
50
|
-
switch (_a.label) {
|
|
51
|
-
case 0:
|
|
52
|
-
if (this.cacher.objects &&
|
|
53
|
-
this.cacher.objects.time > new Date().getTime()) {
|
|
54
|
-
return [2, skipDBObjects
|
|
55
|
-
? this.cacher.objects.noDBData
|
|
56
|
-
: this.cacher.objects.data];
|
|
57
|
-
}
|
|
58
|
-
return [4, (0, types_1.getAllObject)()];
|
|
59
|
-
case 1:
|
|
60
|
-
objects = _a.sent();
|
|
61
|
-
md5 = (0, util_1.getMD5)(JSON.stringify(objects));
|
|
62
|
-
if (this.cacher.objects.id === md5) {
|
|
63
|
-
this.cacher.objects.time = new Date().getTime() + 1000;
|
|
64
|
-
return [2, skipDBObjects
|
|
65
|
-
? this.cacher.objects.noDBData
|
|
66
|
-
: this.cacher.objects.data];
|
|
67
|
-
}
|
|
68
|
-
result = _.compact(_.map(objects, function (metadataObject) {
|
|
69
|
-
var metadata = _this.translationObjectMetadata(metadataObject.metadata);
|
|
70
|
-
var obj = tslib_1.__assign({ __id: metadata._id, _id: metadata.name }, metadata);
|
|
71
|
-
delete obj.__filename;
|
|
72
|
-
delete obj.__timestamp;
|
|
73
|
-
return obj;
|
|
74
|
-
}));
|
|
75
|
-
this.cacher.objects = {
|
|
76
|
-
id: md5,
|
|
77
|
-
data: result,
|
|
78
|
-
noDBData: _.filter(result, function (item) {
|
|
79
|
-
return !item.__id;
|
|
80
|
-
}),
|
|
81
|
-
time: new Date().getTime() + 1000,
|
|
82
|
-
};
|
|
83
|
-
return [2, result];
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
_this.cacher = {
|
|
35
|
+
class MetadataDriver extends _1.SteedosMongoDriver {
|
|
36
|
+
databaseVersion;
|
|
37
|
+
config;
|
|
38
|
+
cacher;
|
|
39
|
+
constructor(config) {
|
|
40
|
+
super(config);
|
|
41
|
+
this.cacher = {
|
|
89
42
|
objects: {},
|
|
90
43
|
};
|
|
91
|
-
return _this;
|
|
92
44
|
}
|
|
93
|
-
|
|
45
|
+
getAllObjects = async (skipDBObjects = false) => {
|
|
46
|
+
if (this.cacher.objects &&
|
|
47
|
+
this.cacher.objects.time > new Date().getTime()) {
|
|
48
|
+
return skipDBObjects
|
|
49
|
+
? this.cacher.objects.noDBData
|
|
50
|
+
: this.cacher.objects.data;
|
|
51
|
+
}
|
|
52
|
+
const objects = await (0, types_1.getAllObject)();
|
|
53
|
+
const md5 = (0, util_1.getMD5)(JSON.stringify(objects));
|
|
54
|
+
if (this.cacher.objects.id === md5) {
|
|
55
|
+
this.cacher.objects.time = new Date().getTime() + 1000;
|
|
56
|
+
return skipDBObjects
|
|
57
|
+
? this.cacher.objects.noDBData
|
|
58
|
+
: this.cacher.objects.data;
|
|
59
|
+
}
|
|
60
|
+
const result = _.compact(_.map(objects, (metadataObject) => {
|
|
61
|
+
const metadata = this.translationObjectMetadata(metadataObject.metadata);
|
|
62
|
+
const obj = {
|
|
63
|
+
__id: metadata._id,
|
|
64
|
+
_id: metadata.name,
|
|
65
|
+
...metadata,
|
|
66
|
+
};
|
|
67
|
+
delete obj.__filename;
|
|
68
|
+
delete obj.__timestamp;
|
|
69
|
+
return obj;
|
|
70
|
+
}));
|
|
71
|
+
this.cacher.objects = {
|
|
72
|
+
id: md5,
|
|
73
|
+
data: result,
|
|
74
|
+
noDBData: _.filter(result, function (item) {
|
|
75
|
+
return !item.__id;
|
|
76
|
+
}),
|
|
77
|
+
time: new Date().getTime() + 1000,
|
|
78
|
+
};
|
|
79
|
+
return result;
|
|
80
|
+
};
|
|
81
|
+
addDefaultProps(records) {
|
|
94
82
|
if (!records) {
|
|
95
83
|
return records;
|
|
96
84
|
}
|
|
97
|
-
|
|
85
|
+
const results = records.map((obj) => ({
|
|
86
|
+
...obj,
|
|
87
|
+
...BASERECORD,
|
|
88
|
+
}));
|
|
98
89
|
return results;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
90
|
+
}
|
|
91
|
+
queryMetadata(collection, queryOptions, spaceId) {
|
|
92
|
+
const mongoFilters = this.getMongoFilters(queryOptions.filters);
|
|
102
93
|
if (!spaceId) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
const str = JSON.stringify(mongoFilters);
|
|
95
|
+
const regex = /"space":"([^"]+)"/;
|
|
96
|
+
const match = regex.exec(str);
|
|
97
|
+
const space = match ? match[1] : null;
|
|
107
98
|
if (space) {
|
|
108
99
|
spaceId = space;
|
|
109
100
|
}
|
|
@@ -115,348 +106,253 @@ var MetadataDriver = (function (_super) {
|
|
|
115
106
|
}
|
|
116
107
|
}
|
|
117
108
|
catch (error) {
|
|
118
|
-
console.error(
|
|
109
|
+
console.error(`metadata driver queryMetadata: ${item} is not json data`, error);
|
|
119
110
|
}
|
|
120
111
|
});
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
112
|
+
const mongoOptions = this.getMongoOptions(queryOptions);
|
|
113
|
+
const query = new mingo.Query(mongoFilters);
|
|
114
|
+
const projection = queryOptions.projection
|
|
124
115
|
? Object.assign({}, queryOptions.projection, {
|
|
125
116
|
record_permissions: 1,
|
|
126
117
|
is_system: 1,
|
|
127
118
|
})
|
|
128
119
|
: null;
|
|
129
|
-
|
|
120
|
+
const cursor = query.find(collection, projection);
|
|
130
121
|
if (mongoOptions.sort) {
|
|
131
122
|
cursor.sort(mongoOptions.sort);
|
|
132
123
|
}
|
|
133
124
|
return cursor;
|
|
134
|
-
}
|
|
135
|
-
|
|
125
|
+
}
|
|
126
|
+
translationObjectMetadata(objectConfig, lng) {
|
|
136
127
|
if (!lng) {
|
|
137
128
|
lng = process.env.STEEDOS_DEFAULT_LANGUAGE
|
|
138
129
|
? process.env.STEEDOS_DEFAULT_LANGUAGE
|
|
139
130
|
: "zh-CN";
|
|
140
131
|
}
|
|
141
|
-
|
|
132
|
+
const metadata = clone(objectConfig, false);
|
|
142
133
|
(0, i18n_1.translationObject)(lng, metadata.name, metadata, true);
|
|
143
134
|
return metadata;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
case "apps": return [3, 9];
|
|
158
|
-
case "action_field_updates": return [3, 11];
|
|
159
|
-
case "workflow_notifications": return [3, 13];
|
|
160
|
-
case "workflow_outbound_messages": return [3, 15];
|
|
161
|
-
case "workflow_rule": return [3, 17];
|
|
162
|
-
case "queue_import": return [3, 19];
|
|
163
|
-
case "share_rules": return [3, 21];
|
|
164
|
-
case "restriction_rules": return [3, 23];
|
|
165
|
-
case "roles": return [3, 25];
|
|
135
|
+
}
|
|
136
|
+
async getCachedSources(tableName) {
|
|
137
|
+
switch (tableName) {
|
|
138
|
+
case "objects": {
|
|
139
|
+
return await this.getAllObjects(true);
|
|
140
|
+
}
|
|
141
|
+
case "object_fields": {
|
|
142
|
+
const objects2 = await this.getAllObjects();
|
|
143
|
+
const fields = [];
|
|
144
|
+
_.each(objects2, (metadata) => {
|
|
145
|
+
_.each(metadata.fields, (field) => {
|
|
146
|
+
if (field.hidden == true || field._id) {
|
|
147
|
+
return;
|
|
166
148
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
case 4:
|
|
172
|
-
objects2 = _c.sent();
|
|
173
|
-
fields_1 = [];
|
|
174
|
-
_.each(objects2, function (metadata) {
|
|
175
|
-
_.each(metadata.fields, function (field) {
|
|
176
|
-
if (field.hidden == true || field._id) {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
fields_1.push(tslib_1.__assign({ _id: "".concat(metadata.name, ".").concat(field.name), object: metadata.name }, field));
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
return [2, fields_1];
|
|
183
|
-
case 5: return [4, this.getAllObjects()];
|
|
184
|
-
case 6:
|
|
185
|
-
objects3 = _c.sent();
|
|
186
|
-
actions_1 = [];
|
|
187
|
-
_.each(objects3, function (metadata) {
|
|
188
|
-
_.each(metadata.actions, function (field) {
|
|
189
|
-
if (field._id) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
actions_1.push(tslib_1.__assign({ _id: "".concat(metadata.name, ".").concat(field.name), object: metadata.name }, field));
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
return [2, actions_1];
|
|
196
|
-
case 7: return [4, this.getAllObjects()];
|
|
197
|
-
case 8:
|
|
198
|
-
objects3 = _c.sent();
|
|
199
|
-
list_views_1 = [];
|
|
200
|
-
_.each(objects3, function (metadata) {
|
|
201
|
-
_.each(metadata.list_views, function (list_view) {
|
|
202
|
-
if (list_view._id) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
list_views_1.push(tslib_1.__assign({ _id: "".concat(metadata.name, ".").concat(list_view.name), object_name: metadata.name }, list_view));
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
return [2, list_views_1];
|
|
209
|
-
case 9:
|
|
210
|
-
_b = clone;
|
|
211
|
-
return [4, (0, types_1.getAppConfigs)()];
|
|
212
|
-
case 10:
|
|
213
|
-
allApps = _b.apply(void 0, [_c.sent()]);
|
|
214
|
-
apps_1 = [];
|
|
215
|
-
_.each(allApps, function (app) {
|
|
216
|
-
if (app.is_creator || app.mobile) {
|
|
217
|
-
apps_1.push(app);
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
(0, i18n_1.translationApps)("zh-CN", apps_1);
|
|
221
|
-
return [2, apps_1];
|
|
222
|
-
case 11: return [4, (0, metadata_registrar_1.getAllActionFieldUpdates)()];
|
|
223
|
-
case 12: return [2, _c.sent()];
|
|
224
|
-
case 13: return [4, (0, metadata_registrar_1.getAllWorkflowNotifications)()];
|
|
225
|
-
case 14: return [2, _c.sent()];
|
|
226
|
-
case 15: return [4, (0, metadata_registrar_1.getWorkflowOutboundMessages)()];
|
|
227
|
-
case 16: return [2, _c.sent()];
|
|
228
|
-
case 17: return [4, (0, metadata_registrar_1.getAllWorkflowRules)()];
|
|
229
|
-
case 18: return [2, _c.sent()];
|
|
230
|
-
case 19: return [4, metadata_registrar_1.registerImport.getAll(broker)];
|
|
231
|
-
case 20:
|
|
232
|
-
configs = _c.sent();
|
|
233
|
-
dataList = _.pluck(configs, "metadata");
|
|
234
|
-
_.each(dataList, function (item) {
|
|
235
|
-
if (!item._id) {
|
|
236
|
-
item._id = "".concat(item.name);
|
|
237
|
-
}
|
|
149
|
+
fields.push({
|
|
150
|
+
_id: `${metadata.name}.${field.name}`,
|
|
151
|
+
object: metadata.name,
|
|
152
|
+
...field,
|
|
238
153
|
});
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
return fields;
|
|
157
|
+
}
|
|
158
|
+
case "object_actions": {
|
|
159
|
+
const objects3 = await this.getAllObjects();
|
|
160
|
+
const actions = [];
|
|
161
|
+
_.each(objects3, (metadata) => {
|
|
162
|
+
_.each(metadata.actions, (field) => {
|
|
163
|
+
if (field._id) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
actions.push({
|
|
167
|
+
_id: `${metadata.name}.${field.name}`,
|
|
168
|
+
object: metadata.name,
|
|
169
|
+
...field,
|
|
248
170
|
});
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
return actions;
|
|
174
|
+
}
|
|
175
|
+
case "object_listviews": {
|
|
176
|
+
const objects3 = await this.getAllObjects();
|
|
177
|
+
const list_views = [];
|
|
178
|
+
_.each(objects3, (metadata) => {
|
|
179
|
+
_.each(metadata.list_views, (list_view) => {
|
|
180
|
+
if (list_view._id) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
list_views.push({
|
|
184
|
+
_id: `${metadata.name}.${list_view.name}`,
|
|
185
|
+
object_name: metadata.name,
|
|
186
|
+
...list_view,
|
|
258
187
|
});
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
};
|
|
270
|
-
MetadataDriver.prototype.mixinSources = function (metaName_1) {
|
|
271
|
-
return tslib_1.__awaiter(this, arguments, void 0, function (metaName, dbSources, codeSources) {
|
|
272
|
-
var key, dbSIDMap, dbIdMap;
|
|
273
|
-
if (dbSources === void 0) { dbSources = []; }
|
|
274
|
-
if (codeSources === void 0) { codeSources = []; }
|
|
275
|
-
return tslib_1.__generator(this, function (_a) {
|
|
276
|
-
key = metaName === "apps" ? "_id" : "name";
|
|
277
|
-
if (metaName === "roles") {
|
|
278
|
-
key = "api_name";
|
|
279
|
-
}
|
|
280
|
-
dbSIDMap = new Map(dbSources.map(function (item) {
|
|
281
|
-
var idValue = null;
|
|
282
|
-
if (item.object || item.object_name) {
|
|
283
|
-
idValue = "".concat(item.object || item.object_name, ".").concat(item[key]);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
return list_views;
|
|
191
|
+
}
|
|
192
|
+
case "apps": {
|
|
193
|
+
const allApps = clone(await (0, types_1.getAppConfigs)());
|
|
194
|
+
const apps = [];
|
|
195
|
+
_.each(allApps, function (app) {
|
|
196
|
+
if (app.is_creator || app.mobile) {
|
|
197
|
+
apps.push(app);
|
|
284
198
|
}
|
|
285
|
-
|
|
286
|
-
|
|
199
|
+
});
|
|
200
|
+
(0, i18n_1.translationApps)("zh-CN", apps);
|
|
201
|
+
return apps;
|
|
202
|
+
}
|
|
203
|
+
case "action_field_updates": {
|
|
204
|
+
return await (0, metadata_registrar_1.getAllActionFieldUpdates)();
|
|
205
|
+
}
|
|
206
|
+
case "workflow_notifications": {
|
|
207
|
+
return await (0, metadata_registrar_1.getAllWorkflowNotifications)();
|
|
208
|
+
}
|
|
209
|
+
case "workflow_outbound_messages": {
|
|
210
|
+
return await (0, metadata_registrar_1.getWorkflowOutboundMessages)();
|
|
211
|
+
}
|
|
212
|
+
case "workflow_rule": {
|
|
213
|
+
return await (0, metadata_registrar_1.getAllWorkflowRules)();
|
|
214
|
+
}
|
|
215
|
+
case "queue_import": {
|
|
216
|
+
const configs = await metadata_registrar_1.registerImport.getAll(broker);
|
|
217
|
+
const dataList = _.pluck(configs, "metadata");
|
|
218
|
+
_.each(dataList, function (item) {
|
|
219
|
+
if (!item._id) {
|
|
220
|
+
item._id = `${item.name}`;
|
|
287
221
|
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
222
|
+
});
|
|
223
|
+
return dataList;
|
|
224
|
+
}
|
|
225
|
+
case "share_rules": {
|
|
226
|
+
const configs = await metadata_registrar_1.registerShareRules.getAll(broker);
|
|
227
|
+
const dataList = _.pluck(configs, "metadata");
|
|
228
|
+
_.each(dataList, function (item) {
|
|
295
229
|
if (!item._id) {
|
|
296
|
-
|
|
230
|
+
item._id = `${item.object_name}.${item.name}`;
|
|
297
231
|
}
|
|
298
|
-
|
|
299
|
-
|
|
232
|
+
});
|
|
233
|
+
return dataList;
|
|
234
|
+
}
|
|
235
|
+
case "restriction_rules": {
|
|
236
|
+
const configs = await metadata_registrar_1.registerRestrictionRules.getAll(broker);
|
|
237
|
+
const dataList = _.pluck(configs, "metadata");
|
|
238
|
+
_.each(dataList, function (item) {
|
|
239
|
+
if (!item._id) {
|
|
240
|
+
item._id = `${item.object_name}.${item.name}`;
|
|
300
241
|
}
|
|
301
242
|
});
|
|
302
|
-
return
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
}
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
};
|
|
342
|
-
MetadataDriver.prototype.count = function (tableName, query) {
|
|
343
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
344
|
-
var result;
|
|
345
|
-
return tslib_1.__generator(this, function (_a) {
|
|
346
|
-
switch (_a.label) {
|
|
347
|
-
case 0: return [4, this.find(tableName, query)];
|
|
348
|
-
case 1:
|
|
349
|
-
result = _a.sent();
|
|
350
|
-
return [2, result.length];
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
});
|
|
354
|
-
};
|
|
355
|
-
MetadataDriver.prototype.insert = function (tableName, doc) {
|
|
356
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
357
|
-
var nameValue, result;
|
|
358
|
-
return tslib_1.__generator(this, function (_a) {
|
|
359
|
-
switch (_a.label) {
|
|
360
|
-
case 0:
|
|
361
|
-
nameValue = tableName === "apps" ? doc.code : doc.name;
|
|
362
|
-
if (tableName === "roles") {
|
|
363
|
-
nameValue = doc.api_name;
|
|
364
|
-
}
|
|
365
|
-
if (nameValue && tableName != "permission_objects") {
|
|
366
|
-
isAPIName(nameValue, tableName);
|
|
367
|
-
}
|
|
368
|
-
return [4, _super.prototype.insert.call(this, tableName, doc)];
|
|
369
|
-
case 1:
|
|
370
|
-
result = _a.sent();
|
|
371
|
-
return [4, broker.call("b6-metadata.inserted", {
|
|
372
|
-
type: tableName,
|
|
373
|
-
data: result,
|
|
374
|
-
})];
|
|
375
|
-
case 2:
|
|
376
|
-
_a.sent();
|
|
377
|
-
return [2, result];
|
|
378
|
-
}
|
|
379
|
-
});
|
|
243
|
+
return dataList;
|
|
244
|
+
}
|
|
245
|
+
case "roles": {
|
|
246
|
+
const configs = await (0, metadata_registrar_1.getSourceRoles)();
|
|
247
|
+
return configs;
|
|
248
|
+
}
|
|
249
|
+
default:
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async mixinSources(metaName, dbSources = [], codeSources = []) {
|
|
254
|
+
let key = metaName === "apps" ? "_id" : "name";
|
|
255
|
+
if (metaName === "roles") {
|
|
256
|
+
key = "api_name";
|
|
257
|
+
}
|
|
258
|
+
const dbSIDMap = new Map(dbSources.map((item) => {
|
|
259
|
+
let idValue = null;
|
|
260
|
+
if (item.object || item.object_name) {
|
|
261
|
+
idValue = `${item.object || item.object_name}.${item[key]}`;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
idValue = item[key];
|
|
265
|
+
}
|
|
266
|
+
return [idValue, item];
|
|
267
|
+
}));
|
|
268
|
+
const dbIdMap = new Map(dbSources.map((item) => {
|
|
269
|
+
const idValue = item._id;
|
|
270
|
+
return [idValue, item];
|
|
271
|
+
}));
|
|
272
|
+
codeSources.forEach((item) => {
|
|
273
|
+
if (!item._id) {
|
|
274
|
+
console.error("error: item._id is null");
|
|
275
|
+
}
|
|
276
|
+
if (!dbSIDMap.has(item._id) && !dbIdMap.has(item._id)) {
|
|
277
|
+
dbSIDMap.set(item._id, item);
|
|
278
|
+
}
|
|
380
279
|
});
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
280
|
+
return Array.from(dbSIDMap.values());
|
|
281
|
+
}
|
|
282
|
+
async find(tableName, query) {
|
|
283
|
+
delete query.fields;
|
|
284
|
+
const result = await super.find(tableName, query);
|
|
285
|
+
const spaceId = result.length > 0 ? result[0].space || null : null;
|
|
286
|
+
const cachedSources = await this.getCachedSources(tableName);
|
|
287
|
+
const sources = await this.mixinSources(tableName, result, this.addDefaultProps(cachedSources));
|
|
288
|
+
const data = this.queryMetadata(sources, query, spaceId).all();
|
|
289
|
+
return data;
|
|
290
|
+
}
|
|
291
|
+
async directFind(tableName, query) {
|
|
292
|
+
const result = await super.find(tableName, query);
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
async count(tableName, query) {
|
|
296
|
+
const result = await this.find(tableName, query);
|
|
297
|
+
return result.length;
|
|
298
|
+
}
|
|
299
|
+
async insert(tableName, doc) {
|
|
300
|
+
let nameValue = tableName === "apps" ? doc.code : doc.name;
|
|
301
|
+
if (tableName === "roles") {
|
|
302
|
+
nameValue = doc.api_name;
|
|
303
|
+
}
|
|
304
|
+
if (nameValue && tableName != "permission_objects") {
|
|
305
|
+
isAPIName(nameValue, tableName);
|
|
306
|
+
}
|
|
307
|
+
const result = await super.insert(tableName, doc);
|
|
308
|
+
await broker.call(`b6-metadata.inserted`, {
|
|
309
|
+
type: tableName,
|
|
310
|
+
data: result,
|
|
408
311
|
});
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
id: id,
|
|
425
|
-
data: record,
|
|
426
|
-
})];
|
|
427
|
-
case 3:
|
|
428
|
-
_a.sent();
|
|
429
|
-
_a.label = 4;
|
|
430
|
-
case 4: return [2, result];
|
|
431
|
-
}
|
|
432
|
-
});
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
async update(tableName, id, data) {
|
|
315
|
+
let nameValue = tableName === "apps" ? data.code : data.name;
|
|
316
|
+
if (tableName === "roles") {
|
|
317
|
+
nameValue = data.api_name;
|
|
318
|
+
}
|
|
319
|
+
if (nameValue && tableName != "permission_objects") {
|
|
320
|
+
isAPIName(nameValue, tableName);
|
|
321
|
+
}
|
|
322
|
+
const result = await super.update(tableName, id, data);
|
|
323
|
+
await broker.call(`b6-metadata.updated`, {
|
|
324
|
+
type: tableName,
|
|
325
|
+
id,
|
|
326
|
+
data: result,
|
|
433
327
|
});
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
}
|
|
445
|
-
else if (_.isArray(id)) {
|
|
446
|
-
filters = id;
|
|
447
|
-
}
|
|
448
|
-
else if (_.has(id, "filters")) {
|
|
449
|
-
filters = id.filters;
|
|
450
|
-
}
|
|
451
|
-
return [4, this.find(collection, { filters: filters })];
|
|
452
|
-
case 1:
|
|
453
|
-
records = _a.sent();
|
|
454
|
-
return [2, records.length > 0 ? records[0] : null];
|
|
455
|
-
}
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
async delete(tableName, id) {
|
|
331
|
+
const record = await super.findOne(tableName, id, {});
|
|
332
|
+
const result = await super.delete(tableName, id);
|
|
333
|
+
if (record) {
|
|
334
|
+
await broker.call(`b6-metadata.deleted`, {
|
|
335
|
+
type: tableName,
|
|
336
|
+
id,
|
|
337
|
+
data: record,
|
|
456
338
|
});
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
339
|
+
}
|
|
340
|
+
return result;
|
|
341
|
+
}
|
|
342
|
+
async findOne(collection, id, query, spaceId) {
|
|
343
|
+
let filters = [];
|
|
344
|
+
if (_.isString(id)) {
|
|
345
|
+
filters = ["_id", "=", id];
|
|
346
|
+
}
|
|
347
|
+
else if (_.isArray(id)) {
|
|
348
|
+
filters = id;
|
|
349
|
+
}
|
|
350
|
+
else if (_.has(id, "filters")) {
|
|
351
|
+
filters = id.filters;
|
|
352
|
+
}
|
|
353
|
+
const records = await this.find(collection, { filters: filters });
|
|
354
|
+
return records.length > 0 ? records[0] : null;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
461
357
|
exports.MetadataDriver = MetadataDriver;
|
|
462
358
|
//# sourceMappingURL=metadata.js.map
|