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 => { const response = await query({ url: "/datasets/", method: "get", }); if ("error" in response) { throw new Error(`Ошибка: ${response.error.status}`); } return response.data; }; export const createDataset = async (data: FormData): Promise => { const response = await query({ 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 => { const response = await query({ 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 => { 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({ 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 => { const response = await query({ 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 => { const response = await query({ 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 => { const response = await query({ 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 => { const response = await query({ 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 => { const response = await query({ 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 => { const response = await query({ 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({ 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 }; };