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) => { 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) => { 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) => { 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;