@steedos/objectql 2.2.24 → 2.2.27
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/driver/meteorMongo.js +2 -2
- package/lib/driver/meteorMongo.js.map +1 -1
- package/lib/dynamic-load/trigger.d.ts +6 -0
- package/lib/dynamic-load/trigger.js +111 -1
- package/lib/dynamic-load/trigger.js.map +1 -1
- package/lib/services/helpers/graphql.js +10 -3
- package/lib/services/helpers/graphql.js.map +1 -1
- package/lib/types/object.d.ts +1 -0
- package/lib/types/object.js +42 -15
- package/lib/types/object.js.map +1 -1
- package/lib/types/object_dynamic_load.js +8 -5
- package/lib/types/object_dynamic_load.js.map +1 -1
- package/package.json +9 -9
- package/src/driver/meteorMongo.ts +2 -2
- package/src/dynamic-load/trigger.ts +97 -0
- package/src/services/helpers/graphql.ts +10 -3
- package/src/types/object.ts +29 -9
- package/src/types/object_dynamic_load.ts +8 -4
|
@@ -13,8 +13,9 @@ const BASIC_TYPE_MAPPING = {
|
|
|
13
13
|
'select': 'String',
|
|
14
14
|
'url': 'String',
|
|
15
15
|
'email': 'String',
|
|
16
|
-
'date': '
|
|
17
|
-
'datetime': '
|
|
16
|
+
'date': 'Date',
|
|
17
|
+
'datetime': 'Date',
|
|
18
|
+
'time': 'Date',
|
|
18
19
|
'number': 'Float',
|
|
19
20
|
'currency': 'Float',
|
|
20
21
|
'boolean': 'Boolean'
|
|
@@ -103,7 +104,7 @@ export function generateSettingsGraphql(objectConfig: SteedosObjectTypeConfig) {
|
|
|
103
104
|
let refTo = field.reference_to;
|
|
104
105
|
// 判断能否根据refTo找到对象,如果找到则说明对象已加载,否则return
|
|
105
106
|
let objMetaData = getLocalService(refTo);
|
|
106
|
-
if (!objMetaData || objMetaData.settings.deleted) {
|
|
107
|
+
if (refTo != objectName && (!objMetaData || objMetaData.settings.deleted)) {
|
|
107
108
|
return;
|
|
108
109
|
}
|
|
109
110
|
if (field.multiple) {
|
|
@@ -538,6 +539,9 @@ async function translateToDisplay(objectName, doc, userSession: any) {
|
|
|
538
539
|
let lookupLabel = "";
|
|
539
540
|
let refTo = field.reference_to;
|
|
540
541
|
let refValue = doc[name];
|
|
542
|
+
if (!refValue) {
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
541
545
|
let refObj = steedosSchema.getObject(refTo);
|
|
542
546
|
let nameFieldKey = await refObj.getNameFieldKey();
|
|
543
547
|
if (field.multiple) {
|
|
@@ -562,6 +566,9 @@ async function translateToDisplay(objectName, doc, userSession: any) {
|
|
|
562
566
|
let masterDetailLabel = "";
|
|
563
567
|
let refTo = field.reference_to;
|
|
564
568
|
let refValue = doc[name];
|
|
569
|
+
if (!refValue) {
|
|
570
|
+
continue;
|
|
571
|
+
}
|
|
565
572
|
let refObj = steedosSchema.getObject(refTo);
|
|
566
573
|
let nameFieldKey = await refObj.getNameFieldKey();
|
|
567
574
|
if (field.multiple) {
|
package/src/types/object.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { sortBy, forEach } from 'lodash';
|
|
|
18
18
|
import { ShareRules } from './shareRule';
|
|
19
19
|
import { RestrictionRule } from './restrictionRule';
|
|
20
20
|
import { FieldPermission } from './field_permission';
|
|
21
|
+
import { getPatternListeners } from '../dynamic-load';
|
|
21
22
|
|
|
22
23
|
const clone = require('clone')
|
|
23
24
|
|
|
@@ -113,7 +114,7 @@ export interface SteedosObjectTypeConfig extends SteedosObjectProperties {
|
|
|
113
114
|
permission_set?: Dictionary<SteedosObjectPermissionTypeConfig> //TODO remove ; 目前为了兼容现有object的定义保留
|
|
114
115
|
}
|
|
115
116
|
|
|
116
|
-
const _TRIGGERKEYS = ['beforeFind', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterFind', 'afterCount', 'afterFindOne', 'afterInsert', 'afterUpdate', 'afterDelete', 'beforeAggregate', 'afterAggregate']
|
|
117
|
+
export const _TRIGGERKEYS = ['beforeFind', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterFind', 'afterCount', 'afterFindOne', 'afterInsert', 'afterUpdate', 'afterDelete', 'beforeAggregate', 'afterAggregate']
|
|
117
118
|
|
|
118
119
|
const properties = ['label', 'icon', 'enable_search', 'sidebar', 'is_enable', 'enable_files', 'enable_tasks', 'enable_notes', 'enable_events', 'enable_api', 'enable_share', 'enable_instances', 'enable_chatter', 'enable_audit', 'enable_web_forms', 'enable_inline_edit', 'enable_approvals', 'enable_trash', 'enable_space_global', 'enable_tree', 'parent_field', 'children_field', 'enable_enhanced_lookup', 'enable_workflow', 'is_view', 'hidden', 'description', 'custom', 'owner', 'methods', '_id', 'relatedList', 'fields_serial_number', "is_enable", "in_development", "version"]
|
|
119
120
|
|
|
@@ -361,16 +362,35 @@ export class SteedosObjectType extends SteedosObjectProperties {
|
|
|
361
362
|
|
|
362
363
|
async runTriggers(when: string, context: SteedosTriggerContextConfig) {
|
|
363
364
|
let triggers = this._triggersQueue[when]
|
|
364
|
-
if (
|
|
365
|
-
|
|
366
|
-
}
|
|
365
|
+
if (triggers) {
|
|
366
|
+
let triggerKeys = _.keys(triggers)
|
|
367
367
|
|
|
368
|
-
|
|
368
|
+
for (let index = 0; index < triggerKeys.length; index++) {
|
|
369
|
+
let trigger = triggers[triggerKeys[index]];
|
|
370
|
+
await this.runTirgger(trigger, context)
|
|
371
|
+
}
|
|
372
|
+
}
|
|
369
373
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
374
|
+
// 获取通配的trigger,如果有则生成SteedosTriggerType执行
|
|
375
|
+
let wildcardListeners = getPatternListeners(this.name);
|
|
376
|
+
if (wildcardListeners) {
|
|
377
|
+
for (const key in wildcardListeners) {
|
|
378
|
+
if (Object.prototype.hasOwnProperty.call(wildcardListeners, key)) {
|
|
379
|
+
const listener = wildcardListeners[key];
|
|
380
|
+
if (listener && listener[when]) {
|
|
381
|
+
let triggerConfig: SteedosTriggerTypeConfig = {
|
|
382
|
+
name: `${key}_${when}`,
|
|
383
|
+
on: 'server',
|
|
384
|
+
when: when,
|
|
385
|
+
todo: listener[when],
|
|
386
|
+
}
|
|
387
|
+
let trigger = new SteedosTriggerType(triggerConfig)
|
|
388
|
+
await this.runTirgger(trigger, context)
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
373
392
|
}
|
|
393
|
+
|
|
374
394
|
}
|
|
375
395
|
|
|
376
396
|
async runTriggerActions(when: string, context: SteedosTriggerContextConfig) {
|
|
@@ -1896,7 +1916,7 @@ export class SteedosObjectType extends SteedosObjectProperties {
|
|
|
1896
1916
|
sharesFilter = getUserObjectSharesFilters(this.name, userSession);
|
|
1897
1917
|
|
|
1898
1918
|
if (!_.isEmpty(companyFilter)) {
|
|
1899
|
-
permissionFilters.push(`(${companyFilter.join('
|
|
1919
|
+
permissionFilters.push(`(${companyFilter.join(' or ')})`);
|
|
1900
1920
|
}
|
|
1901
1921
|
|
|
1902
1922
|
if (ownerFilter) {
|
|
@@ -326,7 +326,7 @@ export const loadStandardBaseObjects = async (serviceName: string) => {
|
|
|
326
326
|
let baseObjectJs = util.loadFile(path.join(standardObjectsDir, "base.object.js"))
|
|
327
327
|
baseObjectJs.extend = MONGO_BASE_OBJECT;
|
|
328
328
|
await addObjectConfig(baseObjectJs, SYSTEM_DATASOURCE, serviceName);
|
|
329
|
-
const baseTriggers = ['base.trigger.js', 'base.autonumber.trigger.js','base.masterDetail.trigger.js','base.objectwebhooks.trigger.js','base.recordFieldAudit.trigger.js','base.recordRecentView.trigger.js','base.tree.trigger.js','base.calendar.trigger.js'];
|
|
329
|
+
const baseTriggers = ['base.trigger.js', 'base.autonumber.trigger.js','base.masterDetail.trigger.js','base.objectwebhooks.trigger.js','base.recordFieldAudit.trigger.js','base.recordRecentView.trigger.js','base.tree.trigger.js','base.calendar.trigger.js','base.defaultValue.trigger.js'];
|
|
330
330
|
_.forEach(baseTriggers, function(triggerFileName){
|
|
331
331
|
let baseObjectTrigger = util.loadFile(path.join(standardObjectsDir, triggerFileName))
|
|
332
332
|
baseObjectTrigger.listenTo = MONGO_BASE_OBJECT
|
|
@@ -336,9 +336,13 @@ export const loadStandardBaseObjects = async (serviceName: string) => {
|
|
|
336
336
|
let coreObject = util.loadFile(path.join(standardObjectsDir, "core.object.yml"))
|
|
337
337
|
coreObject.name = SQL_BASE_OBJECT;
|
|
338
338
|
await addObjectConfig(coreObject, SYSTEM_DATASOURCE, serviceName);
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
339
|
+
|
|
340
|
+
const coreTriggers = ['core.objectwebhooks.trigger.js','core.defaultValue.trigger.js'];
|
|
341
|
+
_.forEach(coreTriggers, function(triggerFileName){
|
|
342
|
+
let coreObjectTrigger = util.loadFile(path.join(standardObjectsDir, triggerFileName))
|
|
343
|
+
coreObjectTrigger.listenTo = SQL_BASE_OBJECT
|
|
344
|
+
addObjectListenerConfig(coreObjectTrigger)
|
|
345
|
+
})
|
|
342
346
|
|
|
343
347
|
// addAllConfigFiles(path.join(standardObjectsDir, "**"), 'default');
|
|
344
348
|
}
|