feat: 添加trigger在注册时的action重复检查,因为在同步时若出现action重复定义的trigger会导致出错
This commit is contained in:
parent
d32c29da15
commit
da2920c8b5
|
|
@ -104,6 +104,17 @@ class TriggerExecutor {
|
||||||
|| trigger.action instanceof Array && !trigger.action.includes('create'), `trigger【${trigger.name}】是create类型但却带有filter`);
|
|| trigger.action instanceof Array && !trigger.action.includes('create'), `trigger【${trigger.name}】是create类型但却带有filter`);
|
||||||
(0, assert_1.default)(trigger.when === 'before' || trigger.when === 'commit', `定义了filter的trigger【${trigger.name}】的when只能是before或者commit`);
|
(0, assert_1.default)(trigger.when === 'before' || trigger.when === 'commit', `定义了filter的trigger【${trigger.name}】的when只能是before或者commit`);
|
||||||
}
|
}
|
||||||
|
if (Array.isArray(trigger.action)) {
|
||||||
|
const actions = trigger.action;
|
||||||
|
const seen = new Set();
|
||||||
|
const duplicate = actions.find(item => {
|
||||||
|
if (seen.has(item))
|
||||||
|
return true;
|
||||||
|
seen.add(item);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
(0, assert_1.default)(!duplicate, `注册 trigger 「${trigger.name}」 时发现定义中出现了重复定义的action: 「${duplicate}」`);
|
||||||
|
}
|
||||||
Object.assign(this.triggerNameMap, {
|
Object.assign(this.triggerNameMap, {
|
||||||
[trigger.name]: trigger,
|
[trigger.name]: trigger,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,16 @@ export class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends
|
||||||
|| trigger.action instanceof Array && !(trigger.action as any[]).includes('create'), `trigger【${trigger.name}】是create类型但却带有filter`);
|
|| trigger.action instanceof Array && !(trigger.action as any[]).includes('create'), `trigger【${trigger.name}】是create类型但却带有filter`);
|
||||||
assert(trigger.when === 'before' || trigger.when === 'commit', `定义了filter的trigger【${trigger.name}】的when只能是before或者commit`);
|
assert(trigger.when === 'before' || trigger.when === 'commit', `定义了filter的trigger【${trigger.name}】的when只能是before或者commit`);
|
||||||
}
|
}
|
||||||
|
if (Array.isArray(trigger.action)) {
|
||||||
|
const actions = trigger.action;
|
||||||
|
const seen = new Set<string>();
|
||||||
|
const duplicate = actions.find(item => {
|
||||||
|
if (seen.has(item)) return true;
|
||||||
|
seen.add(item);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
assert(!duplicate, `注册 trigger 「${trigger.name}」 时发现定义中出现了重复定义的action: 「${duplicate}」`);
|
||||||
|
}
|
||||||
Object.assign(this.triggerNameMap, {
|
Object.assign(this.triggerNameMap, {
|
||||||
[trigger.name]: trigger,
|
[trigger.name]: trigger,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue