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 }; | |
| }; | |