@proofkit/fmdapi
Version:
FileMaker Data API client
64 lines (63 loc) • 2.1 kB
TypeScript
import { CreateParams, CreateResponse, DeleteParams, DeleteResponse, FieldData, GetParams, GetResponse, LayoutMetadataResponse, ListParamsRaw, Query, ScriptResponse, UpdateParams, UpdateResponse } from '../client-types.js';
export interface BaseRequest {
batch?: boolean;
layout: string;
fetch?: RequestInit;
timeout?: number;
}
export type ListOptions = BaseRequest & {
data: ListParamsRaw;
};
export type GetOptions = BaseRequest & {
data: GetParams & {
recordId: number;
};
};
export type FindOptions = BaseRequest & {
data: ListParamsRaw & {
query: Query[];
};
};
export type CreateOptions = BaseRequest & {
data: CreateParams & {
fieldData: Partial<FieldData>;
};
};
export type UpdateOptions = BaseRequest & {
data: UpdateParams & {
recordId: number;
fieldData: Partial<FieldData>;
};
};
export type DeleteOptions = BaseRequest & {
data: DeleteParams & {
recordId: number;
};
};
export type ContainerUploadOptions = BaseRequest & {
data: {
containerFieldName: string;
repetition?: string | number;
file: Blob;
recordId: string | number;
modId?: number;
};
};
export type ExecuteScriptOptions = BaseRequest & {
script: string;
scriptParam?: string;
};
export type LayoutMetadataOptions = BaseRequest;
export interface Adapter {
list: (opts: ListOptions) => Promise<GetResponse>;
listAll?: (opts: ListOptions) => Promise<GetResponse>;
get: (opts: GetOptions) => Promise<GetResponse>;
find: (opts: FindOptions) => Promise<GetResponse>;
findAll?: (opts: FindOptions) => Promise<GetResponse>;
create: (opts: CreateOptions) => Promise<CreateResponse>;
update: (opts: UpdateOptions) => Promise<UpdateResponse>;
delete: (opts: DeleteOptions) => Promise<DeleteResponse>;
containerUpload: (opts: ContainerUploadOptions) => Promise<void>;
layoutMetadata: (opts: LayoutMetadataOptions) => Promise<LayoutMetadataResponse>;
executeScript: (opts: ExecuteScriptOptions) => Promise<ScriptResponse>;
}