@steedos/standard-object-database 2.2.55-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/main/default/applications/.gitkeep +0 -0
  2. package/main/default/client/datasources.client.js +7 -0
  3. package/main/default/client/object_fields.client.js +212 -0
  4. package/main/default/client/object_layouts.client.js +86 -0
  5. package/main/default/objectTranslations/_object_reload_logs.en/_object_reload_logs.en.objectTranslation.yml +16 -0
  6. package/main/default/objectTranslations/_object_reload_logs.zh-CN/_object_reload_logs.zh-CN.objectTranslation.yml +16 -0
  7. package/main/default/objectTranslations/datasources.en/datasources.en.objectTranslation.yml +121 -0
  8. package/main/default/objectTranslations/datasources.zh-CN/datasources.zh-CN.objectTranslation.yml +105 -0
  9. package/main/default/objectTranslations/object_actions.en/object_actions.en.objectTranslation.yml +55 -0
  10. package/main/default/objectTranslations/object_actions.zh-CN/object_actions.zh-CN.objectTranslation.yml +50 -0
  11. package/main/default/objectTranslations/object_fields.en/object_fields.en.objectTranslation.yml +335 -0
  12. package/main/default/objectTranslations/object_fields.zh-CN/object_fields.zh-CN.objectTranslation.yml +312 -0
  13. package/main/default/objectTranslations/object_layouts.en/object_layouts.en.objectTranslation.yml +72 -0
  14. package/main/default/objectTranslations/object_layouts.zh-CN/object_layouts.zh-CN.objectTranslation.yml +116 -0
  15. package/main/default/objectTranslations/object_listviews.en/object_listviews.en.objectTranslation.yml +153 -0
  16. package/main/default/objectTranslations/object_listviews.zh-CN/object_listviews.zh-CN.objectTranslation.yml +146 -0
  17. package/main/default/objectTranslations/object_related_list.en/object_related_list.en.objectTranslation.yml +82 -0
  18. package/main/default/objectTranslations/object_related_list.zh-CN/object_related_list.zh-CN.objectTranslation.yml +82 -0
  19. package/main/default/objectTranslations/object_triggers.en/object_triggers.en.objectTranslation.yml +30 -0
  20. package/main/default/objectTranslations/object_triggers.zh-CN/object_triggers.zh-CN.objectTranslation.yml +29 -0
  21. package/main/default/objectTranslations/object_validation_rules.en/object_validation_rules.en.objectTranslation.yml +40 -0
  22. package/main/default/objectTranslations/object_validation_rules.zh-CN/object_validation_rules.zh-CN.objectTranslation.yml +38 -0
  23. package/main/default/objectTranslations/objects.en/objects.en.objectTranslation.yml +219 -0
  24. package/main/default/objectTranslations/objects.zh-CN/objects.zh-CN.objectTranslation.yml +218 -0
  25. package/main/default/objects/0.datasources.observe.object.js +83 -0
  26. package/main/default/objects/0.objects_reload.object.js +26 -0
  27. package/main/default/objects/1.objects.observe.object.js +61 -0
  28. package/main/default/objects/10.tabs.observe.object.js +36 -0
  29. package/main/default/objects/11.restriction_rules.observe.object.js +37 -0
  30. package/main/default/objects/12.share_rules.observe.object.js +37 -0
  31. package/main/default/objects/13.permission_fields.observe.object.js +37 -0
  32. package/main/default/objects/14.object_fields.observe.object.js +44 -0
  33. package/main/default/objects/15.permission_objects.observe.object.js +44 -0
  34. package/main/default/objects/2.object_triggers.observe.object.js +35 -0
  35. package/main/default/objects/3.permission_objects.observe.object.js +29 -0
  36. package/main/default/objects/4.permission_set.observe.object.js +39 -0
  37. package/main/default/objects/5.holidays.observe.object.js +30 -0
  38. package/main/default/objects/6.business_hours.observe.object.js +33 -0
  39. package/main/default/objects/7.object_actions.observe.object.js +43 -0
  40. package/main/default/objects/7.object_layouts.observe.object.js +33 -0
  41. package/main/default/objects/9.apps.observe.object.js +33 -0
  42. package/main/default/objects/_object_reload_logs.object.yml +10 -0
  43. package/main/default/objects/datasources.action.js +51 -0
  44. package/main/default/objects/datasources.core.js +34 -0
  45. package/main/default/objects/datasources.object.js +168 -0
  46. package/main/default/objects/datasources.object.yml +113 -0
  47. package/main/default/objects/object_actions.object.js +152 -0
  48. package/main/default/objects/object_actions.object.yml +142 -0
  49. package/main/default/objects/object_fields.action.js +128 -0
  50. package/main/default/objects/object_fields.function.js +104 -0
  51. package/main/default/objects/object_fields.object.js +501 -0
  52. package/main/default/objects/object_fields.object.yml +690 -0
  53. package/main/default/objects/object_layouts.action.js +31 -0
  54. package/main/default/objects/object_layouts.layouts.action.js +19 -0
  55. package/main/default/objects/object_layouts.object.yml +356 -0
  56. package/main/default/objects/object_listviews.action.js +93 -0
  57. package/main/default/objects/object_listviews.object.js +100 -0
  58. package/main/default/objects/object_listviews.object.yml +309 -0
  59. package/main/default/objects/object_manager.app.todo.yml +11 -0
  60. package/main/default/objects/object_related_list.object.js +110 -0
  61. package/main/default/objects/object_related_list.object.yml +208 -0
  62. package/main/default/objects/object_triggers.core.js +58 -0
  63. package/main/default/objects/object_triggers.object.js +65 -0
  64. package/main/default/objects/object_triggers.object.yml +124 -0
  65. package/main/default/objects/object_validation_rules.action.js +33 -0
  66. package/main/default/objects/object_validation_rules.object.yml +100 -0
  67. package/main/default/objects/objects.action.js +157 -0
  68. package/main/default/objects/objects.core.js +398 -0
  69. package/main/default/objects/objects.erd.data.function.js +85 -0
  70. package/main/default/objects/objects.lib.js +42 -0
  71. package/main/default/objects/objects.object.js +543 -0
  72. package/main/default/objects/objects.object.yml +512 -0
  73. package/main/default/objects/objects.tree.js +58 -0
  74. package/main/default/objects/permission_objects.core.js +75 -0
  75. package/main/default/permissionsets/.gitkeep +0 -0
  76. package/main/default/profiles/.gitkeep +0 -0
  77. package/main/default/tabs/.gitkeep +0 -0
  78. package/main/default/triggers/datasources.trigger.js +93 -0
  79. package/main/default/triggers/object_actions.trigger.js +98 -0
  80. package/main/default/triggers/object_fields.trigger.js +376 -0
  81. package/main/default/triggers/object_layouts.trigger.js +153 -0
  82. package/main/default/triggers/object_listviews.trigger.js +139 -0
  83. package/main/default/triggers/object_triggers.trigger.js +50 -0
  84. package/main/default/triggers/object_validation_rules.trigger.js +80 -0
  85. package/main/default/triggers/objects.trigger.js +136 -0
  86. package/package.json +16 -0
  87. package/package.service.js +75 -0
  88. package/public/.md +3 -0
  89. package/src/.md +3 -0
  90. package/webapp/.md +1 -0
@@ -0,0 +1,398 @@
1
+ var objectql = require('@steedos/objectql');
2
+ const clone = require('clone');
3
+ const defaultDatasourceName = 'default';
4
+ const defaultDatasourcesName = ['default','meteor'];
5
+ var triggerCore = require('./object_triggers.core.js');
6
+ var permissionCore = require('./permission_objects.core.js');
7
+
8
+ const DB_OBJECT_SERVICE_NAME = '~database-objects';
9
+
10
+ const _ = require('underscore');
11
+
12
+ function canLoadObject(name, datasource) {
13
+ // if(!datasource || datasource === defaultDatasourceName){
14
+ // if(!name.endsWith('__c')){
15
+ // return false;
16
+ // }else{
17
+ // return true;
18
+ // }
19
+ // }else{
20
+ // return true;
21
+ // }
22
+ return true;
23
+ }
24
+
25
+ function getDataSource(doc) {
26
+ if (doc.datasource && !_.include(defaultDatasourcesName, doc.datasource)) {
27
+ let datasource = Creator.getCollection("datasources").findOne({ _id: doc.datasource })
28
+ return datasource;
29
+ }
30
+ }
31
+
32
+ function getDataSourceName(doc) {
33
+ if (doc && doc.datasource && !_.include(defaultDatasourcesName, doc.datasource)) {
34
+ let datasource = Creator.getCollection("datasources").findOne({ _id: doc.datasource })
35
+ if (datasource) {
36
+ return datasource.name
37
+ } else {
38
+ throw new Error('not find datasource ', doc.datasource);
39
+ }
40
+ }
41
+ if(doc.datasource && _.include(defaultDatasourcesName, doc.datasource)){
42
+ return doc.datasource
43
+ }
44
+ return defaultDatasourceName
45
+ }
46
+
47
+ function loadObjectTriggers(object) {
48
+ Creator.getCollection("object_triggers").find({ space: object.space, object: object.name, is_enable: true }, {
49
+ fields: {
50
+ created: 0,
51
+ created_by: 0,
52
+ modified: 0,
53
+ modified_by: 0
54
+ }
55
+ }).forEach(function (trigger) {
56
+ triggerCore.loadObjectTrigger(trigger);
57
+ })
58
+ }
59
+
60
+ function loadObjectPermission(object) {
61
+ Creator.getCollection("permission_objects").find({ space: object.space, object_name: object.name }, {
62
+ fields: {
63
+ created: 0,
64
+ created_by: 0,
65
+ modified: 0,
66
+ modified_by: 0
67
+ }
68
+ }).forEach(function (permission) {
69
+ permissionCore.loadObjectPermission(permission);
70
+ })
71
+ }
72
+
73
+
74
+ function getObjectFields(object) {
75
+ var object_fields = Creator.getCollection("object_fields").find({
76
+ space: object.space,
77
+ object: object.name
78
+ }, {
79
+ fields: {
80
+ created: 0,
81
+ modified: 0,
82
+ owner: 0,
83
+ created_by: 0,
84
+ modified_by: 0
85
+ },
86
+ sort: {
87
+ sort_no: 1
88
+ }
89
+ }).fetch();
90
+ var fields = {};
91
+ var table_fields = {};
92
+ _.forEach(object_fields, function (f) {
93
+ var cf_arr, child_fields;
94
+ if (/^[a-zA-Z_]\w*(\.\$\.\w+){1}[a-zA-Z0-9]*$/.test(f.name)) {
95
+ cf_arr = f.name.split(".$.");
96
+ child_fields = {};
97
+ child_fields[cf_arr[1]] = f;
98
+ if (!_.size(table_fields[cf_arr[0]])) {
99
+ table_fields[cf_arr[0]] = {};
100
+ }
101
+ return _.extend(table_fields[cf_arr[0]], child_fields);
102
+ } else {
103
+ return fields[f.name] = f;
104
+ }
105
+ });
106
+ _.each(table_fields, function (f, k) {
107
+ if (fields[k].type === "grid") {
108
+ if (!_.size(fields[k].fields)) {
109
+ fields[k].fields = {};
110
+ }
111
+ return _.extend(fields[k].fields, f);
112
+ }
113
+ });
114
+ return fields;
115
+ }
116
+
117
+ function getObjectActions(object) {
118
+ var object_actions = Creator.getCollection("object_actions").find({
119
+ object: object.name,
120
+ space: object.space,
121
+ is_enable: true
122
+ }, {
123
+ fields: {
124
+ created: 0,
125
+ modified: 0,
126
+ owner: 0,
127
+ created_by: 0,
128
+ modified_by: 0
129
+ }
130
+ }).fetch();
131
+ var actions = {};
132
+ _.forEach(object_actions, function (f) {
133
+ return actions[f.name] = f;
134
+ });
135
+ return actions;
136
+ }
137
+
138
+ function getObjectRelateList(object) {
139
+ var relatedList = Creator.getCollection("object_related_list").find({
140
+ space: object.space,
141
+ object_name: object.name
142
+ }, {
143
+ sort: {sort_no: -1},
144
+ fields: {
145
+ _id: 0,
146
+ space: 0,
147
+ object_name: 0,
148
+ created: 0,
149
+ modified: 0,
150
+ owner: 0,
151
+ created_by: 0,
152
+ modified_by: 0
153
+ }
154
+ }).fetch();
155
+ return relatedList;
156
+ }
157
+
158
+
159
+ function loadDBObject(object){
160
+ let fields = getObjectFields(object);
161
+ let actions = getObjectActions(object);
162
+ let relatedList = getObjectRelateList(object);
163
+ objectql.extend(object, {fields: fields}, {actions: actions}, {relatedList: relatedList});
164
+ _.each(actions, function(action){
165
+ action._visible = action.visible;
166
+ objectql.addLazyLoadButtons(action.object, action);
167
+ })
168
+ }
169
+
170
+
171
+ function loadObject(doc, oldDoc) {
172
+ try {
173
+ if (!canLoadObject(doc.name, doc.datasource)) {
174
+ console.warn('warn: Not loaded. Invalid custom object -> ', doc.name);
175
+ return;
176
+ }
177
+
178
+ var datasourceDoc = getDataSource(doc);
179
+ if (doc.datasource && !_.include(defaultDatasourcesName, doc.datasource) && (!datasourceDoc || !datasourceDoc.is_enable)) {
180
+ console.warn('warn: Not loaded. Invalid custom object -> ', doc.name, doc.datasource);
181
+ return;
182
+ }
183
+ var datasourceName = getDataSourceName(doc);
184
+ const datasource = objectql.getDataSource(datasourceName);
185
+
186
+ if (!datasource) {
187
+ console.warn(`warn: Not loaded object [${doc.name}]. Cant not find datasource -> `, datasourceName);
188
+ return;
189
+ }
190
+
191
+ if (oldDoc) {
192
+ var oldDatasourceName = getDataSourceName(oldDoc);
193
+ if (datasourceName != oldDatasourceName) {
194
+ const oldDatasource = objectql.getDataSource(oldDatasourceName);
195
+ if (oldDatasource) {
196
+ oldDatasource.removeObject(oldDoc.name);
197
+ objectql.removeObjectConfig(oldDoc.name, oldDatasourceName);
198
+ }
199
+ }
200
+ }
201
+
202
+ if (oldDoc && doc.name != oldDoc.name) {
203
+ removeObject(oldDoc, true);
204
+ }
205
+
206
+ if (datasourceName === defaultDatasourceName) {
207
+ delete doc.table_name
208
+ }
209
+ //继承base
210
+ loadDBObject(doc);
211
+ const originalObject = clone(doc);
212
+
213
+ // 由于外部数据源对象的datasource属性存的是datasource._id的值,故这里转换为datasoruce.name
214
+ if(!_.include(defaultDatasourcesName, originalObject.datasource)) {
215
+ originalObject.datasource = datasourceName;
216
+ }
217
+
218
+ originalObject.isMain = true;
219
+
220
+ objectql.addObjectConfig(doc, datasourceName);
221
+ objectql.loadObjectLazyListViews(doc.name);
222
+ objectql.loadObjectLazyActions(doc.name);
223
+ objectql.loadActionScripts(doc.name);
224
+ objectql.loadObjectLazyMethods(doc.name);
225
+ objectql.loadObjectLazyListenners(doc.name);
226
+ objectql.loadObjectLazyButtons(doc.name);
227
+ //获取到继承后的对象
228
+ const _doc = objectql.getObjectConfig(doc.name);
229
+ objectql.getSteedosSchema().metadataRegister.addObjectConfig(DB_OBJECT_SERVICE_NAME, originalObject).then(function(res){
230
+ if(res){
231
+ datasource.setObject(doc.name, _doc);
232
+ try {
233
+ if (!datasourceName || datasourceName == defaultDatasourceName) {
234
+ Creator.Objects[doc.name] = _doc;
235
+ Creator.loadObjects(_doc, _doc.name);
236
+ }
237
+ } catch (error) {
238
+ console.log('error', error);
239
+ }
240
+ if (!oldDoc || (oldDoc && oldDoc.is_enable === false && doc.is_enable)) {
241
+ loadObjectTriggers(doc);
242
+ loadObjectPermission(doc);
243
+ }
244
+ }
245
+ })
246
+
247
+
248
+ } catch (error) {
249
+ console.error(error)
250
+ }
251
+ }
252
+
253
+ function removeObject(doc, enforce, reInitDatasource) {
254
+ if (!enforce && !objectql.hasObjectSuffix(doc.name, doc.space) && !doc.datasource) {
255
+ console.warn('warn: Not deleted. Invalid custom object -> ', doc.name);
256
+ return;
257
+ }
258
+ var datasourceName = getDataSourceName(doc);
259
+ const datasource = objectql.getDataSource(datasourceName);
260
+ objectql.removeObjectConfig(doc.name, datasourceName);
261
+ if (datasource) {
262
+ datasource.removeObject(doc.name);
263
+ if(reInitDatasource){
264
+ datasource.init();
265
+ }
266
+ }
267
+ if (!datasourceName || datasourceName == defaultDatasourceName) {
268
+ Creator.removeObject(doc.name);
269
+ }
270
+ }
271
+
272
+ function getObjectFromDB(objectName) {
273
+ if (!objectName) {
274
+ return
275
+ }
276
+ return Creator.getCollection("objects").findOne({ name: objectName })
277
+ }
278
+
279
+ function reloadObject(changeLog){
280
+ var objectName = changeLog.object_name;
281
+ var data = changeLog.change_date;
282
+ const objectRecord = Creator.getCollection("objects").findOne({
283
+ name: objectName
284
+ })
285
+ var objectDataSourceName = '';
286
+ if(objectRecord){
287
+ objectDataSourceName = getDataSourceName(objectRecord);
288
+ }else{
289
+ objectDataSourceName = objectql.getObject(objectName).datasource.name;
290
+ }
291
+ const deleted = {
292
+ fields: [],
293
+ actions: []
294
+ }
295
+ if(!objectRecord && objectDataSourceName){
296
+
297
+ switch (data.type) {
298
+ case 'field':
299
+ if(data.event === 'remove'){
300
+ deleted.fields.push(data.value.name);
301
+ objectql.removeObjectFieldConfig(objectName, data.value);
302
+ }else{
303
+ if(data.event === 'update'){
304
+ if(data.value._previousName != data.value.name){
305
+ deleted.fields.push(data.value._previousName);
306
+ objectql.removeObjectFieldConfig(objectName, {name: data.value._previousName});
307
+ }
308
+ }
309
+ objectql.addObjectFieldConfig(objectName, data.value);
310
+ }
311
+ break;
312
+ case 'action':
313
+ if(data.event === 'remove'){
314
+ deleted.actions.push(data.value.name);
315
+ objectql.removeObjectButtonsConfig(objectName, data.value);
316
+ }else{
317
+ if(data.event === 'update'){
318
+ if(data.value._previousName != data.value.name){
319
+ deleted.actions.push(data.value._previousName);
320
+ objectql.removeObjectButtonsConfig(objectName, {name: data.value._previousName});
321
+ }
322
+ }
323
+ if(data.value.is_enable){
324
+ objectql.addObjectButtonsConfig(objectName, data.value);
325
+ }else{
326
+ deleted.actions.push(data.value.name);
327
+ objectql.removeObjectButtonsConfig(objectName, data.value);
328
+ }
329
+ }
330
+ break;
331
+ case 'related_list':
332
+ console.log('TODO related_list');
333
+ // objectql.addObjectFieldConfig(objectName, data.value);
334
+ break;
335
+ default:
336
+ break;
337
+ }
338
+
339
+ const datasource = objectql.getDataSource(objectDataSourceName);
340
+ if(!datasource){
341
+ return
342
+ }
343
+ //获取到最新的对象
344
+ const object = objectql.getObjectConfig(objectName);
345
+
346
+ let _mf = _.max(_.values(object.fields), function (field) { return field.sort_no; });
347
+ if(_mf && object.name){
348
+ object.fields_serial_number = _mf.sort_no + 10;
349
+ }
350
+
351
+ if(deleted.fields.length == 0){
352
+ deleted.fields = null;
353
+ }
354
+ if(deleted.actions.length == 0){
355
+ deleted.actions = null;
356
+ }
357
+
358
+ objectql.getSteedosSchema().metadataRegister.addObjectConfig(DB_OBJECT_SERVICE_NAME, Object.assign({}, object, {isMain:false, __deleted: deleted})).then(function(res){
359
+ if(res){
360
+ datasource.setObject(object.name, object);
361
+ try {
362
+ if(!objectDataSourceName || objectDataSourceName == defaultDatasourceName){
363
+ Creator.Objects[object.name] = object;
364
+ Creator.loadObjects(object, object.name);
365
+ }
366
+ } catch (error) {
367
+ console.log('error', error);
368
+ }
369
+ }
370
+ })
371
+ }
372
+
373
+ }
374
+
375
+ function triggerReloadObject(objectName, type, value, event){
376
+ const objectRecord = Creator.getCollection("objects").findOne({
377
+ name: objectName
378
+ })
379
+ if(objectRecord){
380
+ //TODO 待支持动态加载related_list后, 删除此行代码
381
+ Creator.getCollection("objects").update({name: objectName}, {$set: {reload_time: new Date()}})
382
+ }else{
383
+ Creator.getCollection("_object_reload_logs").insert({
384
+ object_name: objectName,
385
+ change_date: {
386
+ type: type,
387
+ event: event,
388
+ value: value
389
+ },
390
+ change_time: new Date(),
391
+ space: value.space
392
+ })
393
+ }
394
+ }
395
+
396
+ module.exports = {
397
+ loadObject, removeObject, getDataSourceName, canLoadObject, getObjectFromDB, getDataSource, reloadObject, triggerReloadObject, loadDBObject
398
+ }
@@ -0,0 +1,85 @@
1
+ /*
2
+ * @Author: sunhaolin@hotoa.com
3
+ * @Date: 2021-07-30 09:20:04
4
+ * @LastEditors: sunhaolin@hotoa.com
5
+ * @LastEditTime: 2022-07-29 11:32:40
6
+ * @Description:
7
+ */
8
+ const InternalData = require('@steedos/standard-objects').internalData;
9
+ const clone = require('clone');
10
+ const steedosI18n = require("@steedos/i18n");
11
+ const objectql = require("@steedos/objectql");
12
+ const _ = require('underscore');
13
+ const auth = require("@steedos/auth");
14
+ const getLng = async function(userId){
15
+ const userSession = await auth.getSessionByUserId(userId);
16
+ return userSession.language;
17
+ }
18
+
19
+ function getOriginalObjectFields(objectName){
20
+ return objectql.getOriginalObjectConfig(objectName).fields || {}
21
+ }
22
+
23
+ async function getObjectFields(objectName, userId){
24
+ let object = await InternalData.getObject(objectName, userId);
25
+ if(object){
26
+ let fields = [];
27
+ let originalFieldsName = ['created_by', 'modified_by'].concat(_.keys(getOriginalObjectFields(objectName))); //'created', 'modified', 'owner'
28
+ _.each(object.fields, function(field){
29
+ if(_.include(originalFieldsName, field.name)){
30
+ if(!field._id ){
31
+ fields.push(Object.assign({_id: `${objectName}.${field.name}`, _name: field.name, object: objectName}, field))
32
+ }else{
33
+ fields.push(Object.assign({_name: field.name, object: objectName}, field))
34
+ }
35
+
36
+ }
37
+ })
38
+ return fields
39
+ }
40
+ }
41
+
42
+ async function getObjects(userId){
43
+ let objects = {};
44
+ let lng = await getLng(userId)
45
+ let allObjectConfigs = await objectql.getSteedosSchema().getAllObject();
46
+ for (const objectConfig of allObjectConfigs) {
47
+ var _obj = clone(objectConfig.metadata);
48
+ var k = _obj.name;
49
+ if(!_obj.hidden && !_.include(InternalData.hiddenObjects, k)){
50
+ if(!_obj._id){
51
+ _obj._id = k;
52
+ }
53
+ _obj.name = k;
54
+ // _obj.datasource = name;
55
+ _obj.fields = {};
56
+ let oFields = await getObjectFields(k, userId);
57
+ _.each(oFields, function(_f){
58
+ _obj.fields[_f.name] = _f;
59
+ });
60
+ delete _obj.actions
61
+ delete _obj.triggers
62
+ delete _obj.list_views
63
+ delete _obj.permission_set
64
+ if(_obj.enable_inline_edit !== false){
65
+ // 默认值配置为true
66
+ _obj.enable_inline_edit = true;
67
+ }
68
+ objects[_obj.name] = _obj
69
+ }
70
+ }
71
+ steedosI18n.translationObjects(lng, objects)
72
+ return _.values(objects);
73
+ }
74
+
75
+ module.exports = {
76
+ listenTo: 'objects',
77
+ erd: async function(req, res){
78
+ const params = req.params;
79
+ const userSession = req.user;
80
+ const spaceId = userSession.spaceId;
81
+ const userId = userSession.userId;
82
+ const objects = await getObjects(userId);
83
+ res.status(200).send({ value: objects });
84
+ }
85
+ }
@@ -0,0 +1,42 @@
1
+ var objectql = require('@steedos/objectql');
2
+ const defaultDatasourceName = 'default';
3
+
4
+ function canLoadObject(name, datasource){
5
+ var config = objectql.getSteedosConfig();
6
+ if(config.tenant && config.tenant.saas){
7
+ return false;
8
+ }
9
+ return true;
10
+ // if(!datasource || datasource === defaultDatasourceName){
11
+ // if(name.endsWith('__c')){
12
+ // return false;
13
+ // }else{
14
+ // return true;
15
+ // }
16
+ // }else{
17
+ // return true;
18
+ // }
19
+ }
20
+
21
+ function getDataSourceName(doc){
22
+ if(doc && doc.datasource && doc.datasource != defaultDatasourceName){
23
+ let datasource = Creator.getCollection("datasources").findOne({_id: doc.datasource})
24
+ if(datasource){
25
+ return datasource.name
26
+ }else{
27
+ throw new Error('not find datasource ', doc.datasource);
28
+ }
29
+ }
30
+ return defaultDatasourceName
31
+ }
32
+
33
+ function getObjectFromDB(objectName){
34
+ if(!objectName){
35
+ return
36
+ }
37
+ return Creator.getCollection("objects").findOne({name: objectName})
38
+ }
39
+
40
+ module.exports = {
41
+ getDataSourceName,canLoadObject,getObjectFromDB
42
+ }