UNPKG

ra-data-treeql

Version:
63 lines (60 loc) 3.58 kB
import { DataProvider, fetchUtils, RaRecord, GetListParams, GetListResult, GetOneParams, GetOneResult, GetManyParams, GetManyResult, GetManyReferenceParams, GetManyReferenceResult, UpdateParams, UpdateResult, UpdateManyParams, UpdateManyResult, CreateParams, CreateResult, DeleteParams, DeleteResult, DeleteManyParams, DeleteManyResult } from 'ra-core'; /** * Maps react-admin queries to a TreeQL powered REST API * * @see https://treeql.org * * @example * * getList => GET http://my.api.url/records/posts?order=title,ASC&page=1,25 * getOne => GET http://my.api.url/records/posts/123 * getMany => GET http://my.api.url/records/posts?123,456,789 * getManyReference => GET http://my.api.url/records/posts?filter=author_id,eq,345 * update => PUT http://my.api.url/records/posts/123 * updateMany => PUT http://my.api.url/records/posts/123,456,789 * create => POST http://my.api.url/records/posts/123 * delete => DELETE http://my.api.url/records/posts/123 * deleteMany => DELETE http://my.api.url/records/posts/123,456,789 * * @example * * import * as React from "react"; * import { Admin, Resource } from 'react-admin'; * import treeqlProvider from 'ra-data-treeql'; * * import { PostList } from './posts'; * * const App = () => ( * <Admin dataProvider={treeqlProvider('http://my.api.url/')}> * <Resource name="posts" list={PostList} /> * </Admin> * ); * * export default App; */ /** * append the result directly to the request url */ declare const formatFilter: (filter: Record<string, any>) => string; declare class TreeQLDataProvider<ResourceType extends string = string> implements DataProvider<ResourceType> { private httpClient; private apiUrl; constructor(_apiUrl: ResourceType, httpClient?: (url: any, options?: fetchUtils.Options) => Promise<{ status: number; headers: Headers; body: string; json: any; }>); getList<RecordType extends RaRecord = any>(resource: ResourceType, params: GetListParams): Promise<GetListResult<RecordType>>; getOne<RecordType extends RaRecord = any>(resource: ResourceType, params: GetOneParams<RecordType>): Promise<GetOneResult<RecordType>>; getMany<RecordType extends RaRecord = any>(resource: ResourceType, params: GetManyParams): Promise<GetManyResult<RecordType>>; getManyReference<RecordType extends RaRecord = any>(resource: ResourceType, params: GetManyReferenceParams): Promise<GetManyReferenceResult<RecordType>>; update<RecordType extends RaRecord = any>(resource: ResourceType, params: UpdateParams<RecordType>): Promise<UpdateResult<RecordType>>; updateMany<RecordType extends RaRecord = any>(resource: ResourceType, params: UpdateManyParams): Promise<UpdateManyResult<RecordType>>; create<RecordType extends RaRecord = any>(resource: ResourceType, params: CreateParams): Promise<CreateResult<RecordType>>; delete<RecordType extends RaRecord = any>(resource: ResourceType, params: DeleteParams<RecordType>): Promise<DeleteResult<RecordType>>; deleteMany<RecordType extends RaRecord = any>(resource: ResourceType, params: DeleteManyParams<RecordType>): Promise<DeleteManyResult<RecordType>>; protected getURL(resource: string, _params?: Record<string, string>): string; } declare const getDataProvider: (apiUrl: string, httpClient?: typeof fetchUtils.fetchJson) => TreeQLDataProvider<string>; export { TreeQLDataProvider, getDataProvider as default, formatFilter };