oak-domain/lib/store/TriggerExecutor.d.ts

51 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { EntityDict, OperateOption, SelectOption } from "../types/Entity";
import { EntityDict as BaseEntityDict } from '../base-app-domain';
import { Logger } from "../types/Logger";
import { Checker } from '../types/Auth';
import { Trigger, VolatileTrigger } from "../types/Trigger";
import { AsyncContext } from './AsyncRowStore';
import { StorageSchema } from '../types';
/**
* update可能会传入多种不同的action此时都需要检查update trigger
*/
export declare class TriggerExecutor<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> {
private counter;
private triggerMap;
private triggerNameMap;
private volatileEntities;
private logger;
private contextBuilder;
private onVolatileTrigger;
constructor(contextBuilder: () => Cxt, logger?: Logger, onVolatileTrigger?: <T extends keyof ED>(entity: T, trigger: VolatileTrigger<ED, T, Cxt>, ids: string[], cxtStr: string, option: OperateOption) => Promise<void>);
setOnVolatileTrigger(onVolatileTrigger: <T extends keyof ED>(entity: T, trigger: VolatileTrigger<ED, T, Cxt>, ids: string[], cxtStr: string, option: OperateOption) => Promise<void>): void;
registerChecker<T extends keyof ED>(checker: Checker<ED, T, Cxt>, schema: StorageSchema<ED>): void;
registerTrigger<T extends keyof ED>(trigger: Trigger<ED, T, Cxt>): void;
unregisterTrigger<T extends keyof ED>(trigger: Trigger<ED, T, Cxt>): void;
private preCommitTrigger;
private postCommitTrigger;
preOperation<T extends keyof ED>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
action: 'select';
}, context: Cxt, option: OperateOption | SelectOption): Promise<void> | void;
execVolatileTrigger<T extends keyof ED>(entity: T, name: string, ids: string[], context: Cxt, option: OperateOption): Promise<void>;
/**
* 判断一个trigger和当前modi上下文是否符合
* trigger的默认行为是如果是commit时机的trigger不显式声明则只能在modi apply时执行create时不执行非commit时机的trigger不显式声明则只在modi create时执行
* @param option
* @param trigger
* @returns
*/
private judgeModiTurn;
postOperation<T extends keyof ED>(entity: T, operation: ED[T]['Operation'] | ED[T]['Selection'] & {
action: 'select';
}, context: Cxt, option: OperateOption | SelectOption, result?: Partial<ED[T]['Schema']>[]): Promise<void> | void;
checkpoint(timestamp: number): Promise<number>;
/**
* 由外部来控制进行按volatileTrigger逐个进行checkpoint
* @param name
* @param timestamp
* @param instanceCount
* @param instanceId
*/
independentCheckPoint(name: string, timestamp: number, instanceCount?: number, instanceId?: number): Promise<number>;
}