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