guide.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import axios from './instance'
  2. import { params } from '@/env'
  3. import {
  4. GUIDE_LIST,
  5. INSERT_GUIDE,
  6. UPDATE_GUIDE,
  7. DELETE_GUIDE,
  8. } from './constant'
  9. interface ServiceGuide {
  10. fusionGuideId: number
  11. cover: string
  12. title: string
  13. recoveryContent?: string
  14. }
  15. export interface Guide {
  16. id: string
  17. cover: string
  18. title: string
  19. recoveryContent?: string
  20. }
  21. export type Guides = Guide[]
  22. const serviceToLocal = (serviceGuide: ServiceGuide): Guide => ({
  23. ...serviceGuide,
  24. id: serviceGuide.fusionGuideId.toString(),
  25. })
  26. const localToService = (guide: Guide): ServiceGuide => ({
  27. ...guide,
  28. fusionGuideId: Number(guide.id),
  29. })
  30. export const fetchGuides = async () => {
  31. const guides = await axios.get<ServiceGuide[]>(GUIDE_LIST, { params: { caseId: params.caseId } })
  32. return guides.map(serviceToLocal)
  33. }
  34. export const postAddGuide = async (guide: Guide) => {
  35. const addData = { ...localToService(guide), caseId: params.caseId, fusionGuideId: undefined }
  36. const serviceData = await axios.post<ServiceGuide>(INSERT_GUIDE, addData)
  37. return serviceToLocal(serviceData)
  38. }
  39. export const postUpdateGuide = async (guide: Guide) => {
  40. return axios.post<undefined>(UPDATE_GUIDE, { ...localToService(guide)})
  41. }
  42. export const postDeleteGuide = (id: Guide['id']) => {
  43. return axios.post<undefined>(DELETE_GUIDE, { fusionGuideId: Number(id) })
  44. }