ra-data-treeql
Version:
TreeQL data provider for react-admin
63 lines (60 loc) • 3.58 kB
TypeScript
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 };