PromucFlow_constructor/app/client/src/entities/Action/index.ts

112 lines
2.4 KiB
TypeScript
Raw Normal View History

import { EmbeddedRestDatasource } from "entities/Datasource";
import { DynamicPath } from "../../utils/DynamicBindingUtils";
import _ from "lodash";
2020-06-04 13:49:22 +00:00
export enum PluginType {
API = "API",
DB = "DB",
}
export enum PaginationType {
NONE = "NONE",
PAGE_NO = "PAGE_NO",
URL = "URL",
}
export interface ActionConfig {
timeoutInMillisecond?: number;
2020-06-04 13:49:22 +00:00
paginationType?: PaginationType;
}
export interface ActionProvider {
name: string;
imageUrl: string;
url: string;
description: string;
credentialSteps: string;
}
export interface Property {
key: string;
value: string;
}
export interface BodyFormData {
editable: boolean;
mandatory: boolean;
description: string;
key: string;
value?: string;
type: string;
}
export interface ApiActionConfig extends ActionConfig {
headers: Property[];
httpMethod: string;
path?: string;
body?: JSON | string | Record<string, any> | null;
queryParameters?: Property[];
bodyFormData?: BodyFormData[];
}
export interface QueryActionConfig extends ActionConfig {
body?: string;
2020-06-04 13:49:22 +00:00
}
export const isStoredDatasource = (val: any): val is StoredDatasource => {
if (!_.isObject(val)) return false;
if (!("id" in val)) return false;
return true;
};
export interface StoredDatasource {
id: string;
}
interface BaseAction {
2020-06-04 13:49:22 +00:00
id: string;
name: string;
organizationId: string;
pageId: string;
collectionId?: string;
pluginId: string;
executeOnLoad: boolean;
dynamicBindingPathList: DynamicPath[];
2020-06-04 13:49:22 +00:00
isValid: boolean;
invalids: string[];
jsonPathKeys: string[];
cacheResponse: string;
confirmBeforeExecute?: boolean;
eventData?: any;
2020-06-04 13:49:22 +00:00
}
interface BaseApiAction extends BaseAction {
pluginType: PluginType.API;
actionConfiguration: ApiActionConfig;
}
export interface EmbeddedApiAction extends BaseApiAction {
datasource: EmbeddedRestDatasource;
2020-06-04 13:49:22 +00:00
}
export interface StoredDatasourceApiAction extends BaseApiAction {
datasource: StoredDatasource;
}
export type ApiAction = EmbeddedApiAction | StoredDatasourceApiAction;
export type RapidApiAction = ApiAction & {
2020-06-04 13:49:22 +00:00
templateId: string;
proverId: string;
provider: ActionProvider;
pluginId: string;
documentation: { text: string };
};
2020-06-04 13:49:22 +00:00
export interface QueryAction extends BaseAction {
pluginType: PluginType.DB;
actionConfiguration: QueryActionConfig;
datasource: StoredDatasource;
2020-06-04 13:49:22 +00:00
}
export type Action = ApiAction | QueryAction;