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