api-core
Version:
Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels
50 lines (38 loc) • 1.46 kB
text/typescript
import {QueryStep, ApiQueryScope} from "../query/ApiQuery";
import {ApiEdgeQueryType} from "./ApiEdgeQueryType";
export enum ApiEdgeActionTrigger {
OutputQuery = 1 << 1,
SubQuery = 1 << 2,
Method = 1 << 3,
Relation = 1 << 4,
Query = OutputQuery | SubQuery,
Any = OutputQuery | Query | Method | Relation
}
export enum ApiEdgeActionTriggerKind {
BeforeEvent,
AfterEvent
}
export class ApiEdgeAction implements QueryStep {
name: string;
triggerKind: ApiEdgeActionTriggerKind = ApiEdgeActionTriggerKind.BeforeEvent;
targetTypes: ApiEdgeQueryType = ApiEdgeQueryType.Any;
triggers: ApiEdgeActionTrigger = ApiEdgeActionTrigger.Any;
triggerNames: string[] = [];
execute: (scope: ApiQueryScope) => Promise<ApiQueryScope>;
constructor(name: string,
execute: (scope: ApiQueryScope) => Promise<ApiQueryScope>,
targetTypes: ApiEdgeQueryType = ApiEdgeQueryType.Any,
triggerKind: ApiEdgeActionTriggerKind = ApiEdgeActionTriggerKind.BeforeEvent,
triggers: ApiEdgeActionTrigger = ApiEdgeActionTrigger.Any,
triggerNames: string[] = []) {
this.name = name;
this.triggers = triggers;
this.execute = execute;
this.targetTypes = targetTypes;
this.triggerKind = triggerKind;
this.triggerNames = triggerNames;
}
inspect = () => {
return `action{${this.name}}`
}
}