import request from '../utils/request'; import * as Common from '../utils/common'; const MyDataProvider = { // *** https://marmelab.com/react-admin/DataProviderWriting.html *** // get a list of records based on sort, filter, and pagination getList: async (resource, params) => { console.log("getList", resource, params); const _params = Common.integrateParams(params) const res = await request.post(resource + '/page', _params); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data.records, total: data.total }); } return Promise.reject(new Error(msg)); }, // get a single record by id getOne: async (resource, params) => { console.log("getOne", resource, params); const res = await request.get(resource + '/' + params.id); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: { id: data.id, ...data, }, }); } return Promise.reject(new Error(msg)); }, // get a list of records based on an array of ids getMany: async (resource, params) => { console.log("getMany", resource, params); const res = await request.post(resource + '/many/' + params.ids); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data.map(item => ({ id: item.id, ...item, })), }); } return Promise.reject(new Error(msg)); }, // get the records referenced to another record, e.g. comments for a post getManyReference: async (resource, params) => { console.log("getManyReference", resource, params); return Promise.resolve(); }, // create a record create: async (resource, params) => { console.log("create", resource, params); const res = await request.post(resource + '/save', params?.data); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: { id: data.id }, }); } return Promise.reject(new Error(msg)); }, // update a record based on a patch update: async (resource, params) => { console.log("update", resource, params); const res = await request.post(resource + '/update', { id: params.id, ...params.data }); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data, }); } return Promise.reject(new Error(msg)); }, // update a list of records based on an array of ids and a common patch updateMany: async (resource, params) => { console.log("updateMany", resource, params); const res = await request.post( resource + '/update/many' , params.ids.map(id => ({ id, ...params.data })) ); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data, }); } return Promise.reject(new Error(msg)); }, // delete a record by id delete: async (resource, params) => { console.log("delete", resource, params); const res = await request.post(resource + '/remove/' + [params.id]); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: { id: params.id }, }); } return Promise.reject(new Error(msg)); }, // delete a list of records based on an array of ids deleteMany: async (resource, params) => { console.log("deleteMany", resource, params); const res = await request.post(resource + '/remove/' + params?.ids); const { code, msg, data } = res.data; if (code === 200) { return Promise.resolve({ data: data, }); } return Promise.reject(new Error(msg)); }, // export excel from all data export: async (resource, params) => { console.log("export", resource, params); const _params = Common.integrateParams(params); try { const res = await request.post(`${resource}/export`, _params, { responseType: 'blob', }); return res; } catch (error) { return Promise.reject(new Error(error)); } } } export default MyDataProvider;