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`);
|
||||
(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, {
|
||||
[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`);
|
||||
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, {
|
||||
[trigger.name]: trigger,
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue