muryshev's picture
init
79278ec
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 };
};