Spaces:
Running
Running
import { | |
DatasetDataType, | |
DatasetInfoDataType, | |
DatasetsResponseType, | |
GetDatasetRequestParams, | |
GetProcessingRequest, | |
} from "./types"; | |
import { downloadFile } from "@/shared/utils/downloadFile"; | |
import { query } from "@/shared/api/query"; | |
export const getDatasets = async (): Promise<DatasetsResponseType> => { | |
const response = await query<DatasetsResponseType>({ | |
url: "/datasets/", | |
method: "get", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const createDataset = async (data: FormData): Promise<DatasetDataType> => { | |
const response = await query<DatasetDataType>({ | |
url: "/datasets/", | |
method: "post", | |
data, | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const activateDataset = async (id: number): Promise<DatasetDataType> => { | |
const response = await query<DatasetDataType>({ | |
url: `/datasets/${id}`, | |
method: "post", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const getDataset = async (id: number, params: GetDatasetRequestParams): Promise<DatasetDataType> => { | |
const requestParams = { ...params, sort: undefined }; | |
const sortParam: string[] = []; | |
if (params.sort) { | |
params.sort.forEach((element) => { | |
if (element.field && element.direction) { | |
sortParam.push(`${element.field}:${element.direction}`); | |
} | |
}); | |
} | |
const response = await query<DatasetDataType>({ | |
url: `/datasets/${id}`, | |
method: "get", | |
params: { ...requestParams, sort: sortParam.length > 0 ? sortParam.join(",") : undefined }, | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const createDatasetsDraft = async (id: number): Promise<DatasetInfoDataType> => { | |
const response = await query<DatasetInfoDataType>({ | |
url: `/datasets/${id}/edit`, | |
method: "post", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const deleteDataset = async (id: number): Promise<void> => { | |
const response = await query<void>({ | |
url: `/datasets/${id}`, | |
method: "delete", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const addFileToDataset = async (id: number, data: FormData): Promise<void> => { | |
const response = await query<void>({ | |
url: `/datasets/${id}/documents/`, | |
method: "post", | |
data, | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const deleteFileFromDataset = async (datasetId: number, fileId: number): Promise<void> => { | |
const response = await query<void>({ | |
url: `/datasets/${datasetId}/documents/${fileId}`, | |
method: "delete", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const getProcessing = async (): Promise<GetProcessingRequest> => { | |
const response = await query<GetProcessingRequest>({ | |
url: "/datasets/processing", | |
method: "get", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return response.data; | |
}; | |
export const downloadDocument = async ( | |
datasetId: number | null, | |
fileId: string, | |
filename: string | |
): Promise<Blob> => { | |
const response = await query<Blob>({ | |
url: `/datasets/${datasetId}/documents/${fileId}`, | |
method: "get", | |
responseType: "blob", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
downloadFile(response, filename); | |
return response.data; | |
}; | |
export const getDocumentPdf = async ( | |
datasetId: number | null, | |
fileId: string, | |
filename: string | |
): Promise<{ file: Blob; filename: string }> => { | |
const response = await query<Blob>({ | |
url: `/datasets/${datasetId}/documents/${fileId}/pdf`, | |
method: "get", | |
responseType: "blob", | |
}); | |
if ("error" in response) { | |
throw new Error(`Ошибка: ${response.error.status}`); | |
} | |
return { file: response.data, filename }; | |
}; | |