对新的checker适配
This commit is contained in:
parent
23a13c9436
commit
abc5533b3e
|
|
@ -21,9 +21,13 @@ var CacheStore = /** @class */ (function (_super) {
|
|||
CacheStore.prototype.operate = function (entity, operation, context, option) {
|
||||
(0, assert_1.default)(context.getCurrentTxnId());
|
||||
if (!option.blockTrigger) {
|
||||
this.checkerExecutor.check(entity, operation, context);
|
||||
this.checkerExecutor.check(entity, operation, context, 'before');
|
||||
}
|
||||
return _super.prototype.operateSync.call(this, entity, operation, context, option);
|
||||
var result = _super.prototype.operateSync.call(this, entity, operation, context, option);
|
||||
if (!option.blockTrigger) {
|
||||
this.checkerExecutor.check(entity, operation, context, 'after');
|
||||
}
|
||||
return result;
|
||||
};
|
||||
CacheStore.prototype.sync = function (opRecords, context) {
|
||||
var autoCommit = !context.getCurrentTxnId();
|
||||
|
|
@ -47,7 +51,7 @@ var CacheStore = /** @class */ (function (_super) {
|
|||
};
|
||||
CacheStore.prototype.check = function (entity, operation, context, checkerTypes) {
|
||||
(0, assert_1.default)(context.getCurrentTxnId());
|
||||
this.checkerExecutor.check(entity, operation, context, checkerTypes);
|
||||
this.checkerExecutor.check(entity, operation, context, undefined, checkerTypes);
|
||||
};
|
||||
CacheStore.prototype.select = function (entity, selection, context, option) {
|
||||
var autoCommit = !context.getCurrentTxnId();
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@ import { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
|
|||
export default class CheckerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends SyncContext<ED>> {
|
||||
private checkerMap;
|
||||
registerChecker<T extends keyof ED>(checker: Checker<ED, T, Cxt>): void;
|
||||
check<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, checkerTypes?: CheckerType[]): void;
|
||||
check<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, when?: 'before' | 'after', checkerTypes?: CheckerType[]): void;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ var CheckerExecutor = /** @class */ (function () {
|
|||
CheckerExecutor.prototype.registerChecker = function (checker) {
|
||||
var _this = this;
|
||||
var entity = checker.entity, action = checker.action, _a = checker.priority, priority = _a === void 0 ? 1 : _a, type = checker.type, conditionalFilter = checker.conditionalFilter;
|
||||
var fn = (0, checker_1.translateCheckerInSyncContext)(checker);
|
||||
var _b = (0, checker_1.translateCheckerInSyncContext)(checker), fn = _b.fn, when = _b.when;
|
||||
var addCheckerMap = function (action2) {
|
||||
var _a, _b, _c;
|
||||
if (_this.checkerMap[entity] && _this.checkerMap[entity][action2]) {
|
||||
|
|
@ -27,6 +27,7 @@ var CheckerExecutor = /** @class */ (function () {
|
|||
type: type,
|
||||
priority: priority,
|
||||
fn: fn,
|
||||
when: when,
|
||||
filter: conditionalFilter,
|
||||
});
|
||||
}
|
||||
|
|
@ -60,12 +61,12 @@ var CheckerExecutor = /** @class */ (function () {
|
|||
addCheckerMap(action);
|
||||
}
|
||||
};
|
||||
CheckerExecutor.prototype.check = function (entity, operation, context, checkerTypes) {
|
||||
CheckerExecutor.prototype.check = function (entity, operation, context, when, checkerTypes) {
|
||||
var e_1, _a;
|
||||
var action = operation.action;
|
||||
var checkers = this.checkerMap[entity] && this.checkerMap[entity][action];
|
||||
if (checkers) {
|
||||
var checkers2 = checkerTypes ? checkers.filter(function (ele) { return checkerTypes.includes(ele.type); }) : checkers;
|
||||
var checkers2 = checkerTypes ? checkers.filter(function (ele) { return checkerTypes.includes(ele.type) && (!when || ele.when === when); }) : checkers;
|
||||
try {
|
||||
for (var checkers2_1 = tslib_1.__values(checkers2), checkers2_1_1 = checkers2_1.next(); !checkers2_1_1.done; checkers2_1_1 = checkers2_1.next()) {
|
||||
var checker = checkers2_1_1.value;
|
||||
|
|
|
|||
|
|
@ -40,9 +40,14 @@ export class CacheStore<
|
|||
): OperationResult<ED> {
|
||||
assert(context.getCurrentTxnId());
|
||||
if (!option.blockTrigger) {
|
||||
this.checkerExecutor.check(entity, operation, context);
|
||||
this.checkerExecutor.check(entity, operation, context, 'before');
|
||||
}
|
||||
return super.operateSync(entity, operation, context, option);
|
||||
const result = super.operateSync(entity, operation, context, option);
|
||||
if (!option.blockTrigger) {
|
||||
this.checkerExecutor.check(entity, operation, context, 'after');
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
sync<Cxt extends SyncContext<ED>>(opRecords: Array<OpRecord<ED>>, context: Cxt) {
|
||||
|
|
@ -68,7 +73,7 @@ export class CacheStore<
|
|||
|
||||
check<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, checkerTypes?: CheckerType[]) {
|
||||
assert(context.getCurrentTxnId());
|
||||
this.checkerExecutor.check(entity, operation, context, checkerTypes);
|
||||
this.checkerExecutor.check(entity, operation, context, undefined, checkerTypes);
|
||||
}
|
||||
|
||||
select<
|
||||
|
|
|
|||
|
|
@ -14,13 +14,14 @@ export default class CheckerExecutor<ED extends EntityDict & BaseEntityDict,Cxt
|
|||
priority: number;
|
||||
fn: (operation: ED[K]['Operation'], context: Cxt, option: SelectOption | OperateOption) => void;
|
||||
type: CheckerType;
|
||||
when: 'before' | 'after';
|
||||
filter?: ED[K]['Update']['filter'] | ((operation: ED[K]['Operation'], context: Cxt, option: SelectOption | OperateOption) => ED[K]['Update']['filter']);
|
||||
}>;
|
||||
};
|
||||
} = {};
|
||||
registerChecker<T extends keyof ED>(checker: Checker<ED, T, Cxt>) {
|
||||
const { entity, action, priority = 1, type, conditionalFilter } = checker;
|
||||
const fn = translateCheckerInSyncContext(checker);
|
||||
const { fn, when } = translateCheckerInSyncContext(checker);
|
||||
const addCheckerMap = (action2: string) => {
|
||||
if (this.checkerMap[entity] && this.checkerMap[entity]![action2]) {
|
||||
let iter = 0;
|
||||
|
|
@ -34,6 +35,7 @@ export default class CheckerExecutor<ED extends EntityDict & BaseEntityDict,Cxt
|
|||
type,
|
||||
priority,
|
||||
fn,
|
||||
when,
|
||||
filter: conditionalFilter,
|
||||
});
|
||||
}
|
||||
|
|
@ -70,11 +72,11 @@ export default class CheckerExecutor<ED extends EntityDict & BaseEntityDict,Cxt
|
|||
}
|
||||
}
|
||||
|
||||
check<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, checkerTypes?: CheckerType[]) {
|
||||
check<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, when?: 'before' | 'after', checkerTypes?: CheckerType[]) {
|
||||
const { action } = operation;
|
||||
const checkers = this.checkerMap[entity] && this.checkerMap[entity]![action];
|
||||
if (checkers) {
|
||||
const checkers2 = checkerTypes ? checkers.filter(ele => checkerTypes.includes(ele.type)) : checkers;
|
||||
const checkers2 = checkerTypes ? checkers.filter(ele => checkerTypes.includes(ele.type) && (!when || ele.when === when)) : checkers;
|
||||
for (const checker of checkers2) {
|
||||
const { filter } = checker;
|
||||
if (filter) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue