/* 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 = { getList: ( resource: ResourceType, params: GetListParams ) => Promise>; getOne: ( resource: ResourceType, params: GetOneParams ) => Promise>; getMany: ( resource: ResourceType, params: GetManyParams ) => Promise>; getManyReference: ( resource: ResourceType, params: GetManyReferenceParams ) => Promise>; update: ( resource: ResourceType, params: UpdateParams ) => Promise>; updateMany: ( resource: ResourceType, params: UpdateManyParams ) => Promise>; create: ( resource: ResourceType, params: CreateParams ) => Promise>; delete: ( resource: ResourceType, params: DeleteParams ) => Promise>; deleteMany: ( resource: ResourceType, params: DeleteManyParams ) => Promise>; [key: string]: any; }; export interface GetListParams { pagination: PaginationPayload; sort: SortPayload; filter: unknown; meta?: any; } export interface GetListResult { data: RecordType[]; total?: number; pageInfo?: { hasNextPage?: boolean; hasPreviousPage?: boolean; }; } export interface GetInfiniteListResult extends GetListResult { pageParam?: number; } export interface GetOneParams { id: RecordType["id"]; meta?: any; } export interface GetOneResult { data: RecordType; } export interface GetManyParams { ids: Identifier[]; meta?: any; } export interface GetManyResult { data: RecordType[]; } export interface GetManyReferenceParams { target: string; id: Identifier; pagination: PaginationPayload; sort: SortPayload; filter: any; meta?: any; } export interface GetManyReferenceResult { data: RecordType[]; total?: number; pageInfo?: { hasNextPage?: boolean; hasPreviousPage?: boolean; }; } export interface UpdateParams { id: Identifier; data: Partial; previousData: T; meta?: any; } export interface UpdateResult { data: RecordType; } export interface UpdateManyParams { ids: Identifier[]; data: T; meta?: any; } export interface UpdateManyResult { data?: RecordType["id"][]; } export interface CreateParams { data: T; meta?: any; } export interface CreateResult { data: RecordType; } export interface DeleteParams { id: RecordType["id"]; previousData?: RecordType; meta?: any; } export interface DeleteResult { data: RecordType; } export interface DeleteManyParams { ids: RecordType["id"][]; meta?: any; } export interface DeleteManyResult { data?: RecordType["id"][]; } export type DataProviderResult = | CreateResult | DeleteResult | DeleteManyResult | GetListResult | GetManyResult | GetManyReferenceResult | GetOneResult | UpdateResult | UpdateManyResult;