UNPKG

@cubicweb/data-provider

Version:

CubicWeb data provider implementation

183 lines (158 loc) 4.04 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ /** * data types */ export type Identifier = string | number; export interface RaRecord { id: Identifier; [key: string]: any; } export interface SortPayload { field: string; order: string; } export interface FilterPayload { [k: string]: any; } export interface PaginationPayload { page: number; perPage: number; } /* dataProvider types */ export type DataProvider<ResourceType extends string = string> = { getList: ( resource: ResourceType, params: GetListParams ) => Promise<GetListResult<RaRecord>>; getOne: ( resource: ResourceType, params: GetOneParams ) => Promise<GetOneResult<RaRecord>>; getMany: ( resource: ResourceType, params: GetManyParams ) => Promise<GetManyResult<RaRecord>>; getManyReference: ( resource: ResourceType, params: GetManyReferenceParams ) => Promise<GetManyReferenceResult<RaRecord>>; update: ( resource: ResourceType, params: UpdateParams ) => Promise<UpdateResult<RaRecord>>; updateMany: ( resource: ResourceType, params: UpdateManyParams ) => Promise<UpdateManyResult<RaRecord>>; create: ( resource: ResourceType, params: CreateParams ) => Promise<CreateResult<RaRecord>>; delete: ( resource: ResourceType, params: DeleteParams<RaRecord> ) => Promise<DeleteResult<RaRecord>>; deleteMany: ( resource: ResourceType, params: DeleteManyParams<RaRecord> ) => Promise<DeleteManyResult<RaRecord>>; [key: string]: any; }; export interface GetListParams { pagination: PaginationPayload; sort: SortPayload; filter: unknown; meta?: any; } export interface GetListResult<RecordType extends RaRecord = any> { data: RecordType[]; total?: number; pageInfo?: { hasNextPage?: boolean; hasPreviousPage?: boolean; }; } export interface GetInfiniteListResult<RecordType extends RaRecord = any> extends GetListResult<RecordType> { pageParam?: number; } export interface GetOneParams<RecordType extends RaRecord = any> { id: RecordType["id"]; meta?: any; } export interface GetOneResult<RecordType extends RaRecord = any> { data: RecordType; } export interface GetManyParams { ids: Identifier[]; meta?: any; } export interface GetManyResult<RecordType extends RaRecord = any> { data: RecordType[]; } export interface GetManyReferenceParams { target: string; id: Identifier; pagination: PaginationPayload; sort: SortPayload; filter: any; meta?: any; } export interface GetManyReferenceResult<RecordType extends RaRecord = any> { data: RecordType[]; total?: number; pageInfo?: { hasNextPage?: boolean; hasPreviousPage?: boolean; }; } export interface UpdateParams<T = any> { id: Identifier; data: Partial<T>; previousData: T; meta?: any; } export interface UpdateResult<RecordType extends RaRecord = any> { data: RecordType; } export interface UpdateManyParams<T = any> { ids: Identifier[]; data: T; meta?: any; } export interface UpdateManyResult<RecordType extends RaRecord = any> { data?: RecordType["id"][]; } export interface CreateParams<T = any> { data: T; meta?: any; } export interface CreateResult<RecordType extends RaRecord = any> { data: RecordType; } export interface DeleteParams<RecordType extends RaRecord = any> { id: RecordType["id"]; previousData?: RecordType; meta?: any; } export interface DeleteResult<RecordType extends RaRecord = any> { data: RecordType; } export interface DeleteManyParams<RecordType extends RaRecord = any> { ids: RecordType["id"][]; meta?: any; } export interface DeleteManyResult<RecordType extends RaRecord = any> { data?: RecordType["id"][]; } export type DataProviderResult<RecordType extends RaRecord = any> = | CreateResult<RecordType> | DeleteResult<RecordType> | DeleteManyResult | GetListResult<RecordType> | GetManyResult<RecordType> | GetManyReferenceResult<RecordType> | GetOneResult<RecordType> | UpdateResult<RecordType> | UpdateManyResult;