Content.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { appApi } from 'src/boot/axios.js'
  2. import APIRepository from '../classes/APIRepository.js'
  3. import { Content, ContentList } from 'src/models/Content.js'
  4. export default class ContentAPI extends APIRepository {
  5. constructor() {
  6. super('content', appApi)
  7. this.APIAdresses = {
  8. base: '/cma/contents',
  9. byId: (id) => '/cma/contents/' + id
  10. }
  11. this.CacheList = {
  12. base: this.name + this.APIAdresses.base,
  13. index: (filters) => this.name + this.APIAdresses.base + encodeURI(filters)
  14. }
  15. this.restUrl = (id) => this.APIAdresses.base + '/' + id
  16. /* Setting the callback functions for the CRUD operations. */
  17. this.setCrudCallbacks({
  18. get: (response) => { return new Content(response.data) },
  19. post: (response) => { return new Content(response.data) },
  20. put: (response) => { return new Content(response.data) },
  21. delete: (response) => { return response.data }
  22. })
  23. }
  24. index(data) {
  25. const normalizedSendData = this.getNormalizedSendData({
  26. category: null, // Number
  27. page: 1, // Number
  28. per_page: 10 // Number
  29. }, data)
  30. return this.sendRequest({
  31. apiMethod: 'get',
  32. api: this.api,
  33. request: this.APIAdresses.base,
  34. cacheKey: this.CacheList.index(normalizedSendData),
  35. data: normalizedSendData,
  36. resolveCallback: (response) => {
  37. const paginate = response.data
  38. const results = response.data.results
  39. delete paginate.results
  40. return {
  41. list: new ContentList(results),
  42. paginate
  43. // {
  44. // "count": 1,
  45. // "num_pages": 1,
  46. // "per_page": 10,
  47. // "current": 1,
  48. // "next": null,
  49. // "previous": null,
  50. // }
  51. }
  52. },
  53. rejectCallback: (error) => {
  54. return error
  55. }
  56. })
  57. }
  58. get (id) {
  59. return this.sendRequest({
  60. apiMethod: 'get',
  61. api: this.api,
  62. request: this.APIAdresses.byId(id),
  63. resolveCallback: (response) => {
  64. return new Content(response.data)
  65. },
  66. rejectCallback: (error) => {
  67. return error
  68. }
  69. })
  70. }
  71. }