UNPKG

@fakel/ra-simple-rest

Version:

Simple Data Provider for @fakel/rest-admin

59 lines (52 loc) 1.91 kB
import axios from 'axios'; import { DataProviderT } from './types'; type RestCreateParamsT = { apiBaseUrl: string; }; const mapToDataWithId = (data) => data.map((item) => ({ ...item, id: item._id })); export const createSimpleRest = (options: RestCreateParamsT): DataProviderT => { const { apiBaseUrl } = options; const APIClient = axios.create({ baseURL: apiBaseUrl, }); return { getMany: async (resource, params = {}) => { const { search, searchBy } = params; const { data } = await APIClient.get(`/${resource}`); return { data: data.data, errors: data.errors }; }, getList: async (resource, params = {}) => { if (params.filters) { const { data } = await APIClient.get(`/${resource}/filters`, { params: params.filters, }); return { data: mapToDataWithId(data.data), errors: data.errors, total: data.total, }; } const { data } = await APIClient.get(`/${resource}`, { params }); return { data: mapToDataWithId(data.data), errors: null, total: data.total }; }, getOne: async (resource, params = {}) => { const { id } = params; const { data } = await APIClient.get(`/${resource}/${id}`); return { data: data.data, errors: data.errors }; }, update: async (resource, payload, params = {}) => { const { id } = params; const { data } = await APIClient.put(`/${resource}/${id}`, payload); return { data, errors: data.errors }; }, create: async (resource, payload, params = {}) => { const { data } = await APIClient.post(`/${resource}`, payload); return { data, errors: data.errors }; }, delete: async (resource, params = {}) => { const { id } = params; const { data } = await APIClient.delete(`/${resource}/${id}`); return { data, errors: data.errors }; }, }; };