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;
|