quintodrome/ui/src/dataProvider/wrapperDataProvider.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

69 lines
2 KiB
JavaScript
Raw Normal View History

2020-05-11 17:27:00 -08:00
import jsonServerProvider from 'ra-data-json-server'
import httpClient from './httpClient'
2020-08-22 09:19:14 -08:00
import { REST_URL } from '../consts'
2020-05-11 17:27:00 -08:00
2020-08-22 09:19:14 -08:00
const dataProvider = jsonServerProvider(REST_URL, httpClient)
2020-05-11 17:27:00 -08:00
const mapResource = (resource, params) => {
switch (resource) {
case 'playlistTrack':
// /api/playlistTrack?playlist_id=123 => /api/playlist/123/tracks
let plsId = '0'
if (params.filter) {
plsId = params.filter.playlist_id
}
return [`playlist/${plsId}/tracks`, params]
default:
return [resource, params]
}
}
const wrapperDataProvider = {
...dataProvider,
getList: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.getList(r, p)
},
getOne: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.getOne(r, p)
},
getMany: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.getMany(r, p)
},
getManyReference: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.getManyReference(r, p)
},
update: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.update(r, p)
},
updateMany: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.updateMany(r, p)
},
create: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.create(r, p)
},
delete: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.delete(r, p)
},
deleteMany: (resource, params) => {
const [r, p] = mapResource(resource, params)
return dataProvider.deleteMany(r, p)
},
addToPlaylist: (playlistId, data) => {
return httpClient(`${REST_URL}/playlist/${playlistId}/tracks`, {
method: 'POST',
body: JSON.stringify(data),
}).then(({ json }) => ({ data: json }))
},
2020-05-11 17:27:00 -08:00
}
export default wrapperDataProvider