import axios from './instance' import { RECORD_LIST, DELETE_RECORD, UPDATE_RECORD, MERGE_RECORD } from './constant' import { params } from '@/env' export enum RecordStatus { ERR = -1, RUN = 0, SUCCESS = 1 } export interface Record { id: string cover: string title: string url: string sort: number status: RecordStatus } interface ServiceRecord { videoFolderId: number, videoFolderName: string, videoFolderCover: string, videoMergeUrl: string, sort: number, uploadStatus: RecordStatus } const toLocal = (serviceRecord: ServiceRecord) : Record => ({ id: serviceRecord.videoFolderId.toString(), cover: serviceRecord.videoFolderCover, title: serviceRecord.videoFolderName, url: serviceRecord.videoMergeUrl, sort: serviceRecord.sort, status: serviceRecord.uploadStatus }) const toService = (record: Record, isUpdate = true): PartialProps => ({ videoFolderId: isUpdate ? Number(record.id): undefined, videoFolderName: record.title, videoFolderCover: record.cover, videoMergeUrl: record.url, sort: record.sort, uploadStatus: record.status }) export type Records = Record[] export const fetchRecords = async () => { const data = await axios.get(RECORD_LIST, { params: { caseId: params.caseId } }) return data.map(toLocal) } export const postAddRecord = async (record: Record, files: File[]) => { const serviceRecord = await postMegerRecord(files) return toLocal(serviceRecord) } export const postUpdateRecord = async (record: Record) => { const serviceRecord = toService(record) await axios.post(UPDATE_RECORD, serviceRecord) } export const postMegerRecord = (files: File[], recordId?: Record['id']) => { return axios.post(MERGE_RECORD, { folderId: recordId && Number(recordId), caseId: params.caseId, files }) } export const postDeleteRecord = async (id: Record['id']) => { await axios.post(DELETE_RECORD, { fusionMeterId: Number(id) }) }