2025-01-23 19:41:31 +03:00
|
|
|
import { queryOptions } from '@tanstack/react-query';
|
|
|
|
|
2025-03-12 11:54:32 +03:00
|
|
|
import { axiosGet, axiosPatch, axiosPost } from '@/backend/api-transport';
|
2025-02-12 20:53:01 +03:00
|
|
|
import { DELAYS, KEYS } from '@/backend/configuration';
|
2025-02-12 01:34:35 +03:00
|
|
|
import { infoMsg } from '@/utils/labels';
|
2025-01-23 19:41:31 +03:00
|
|
|
|
2025-02-12 20:53:01 +03:00
|
|
|
import {
|
2025-04-20 18:06:18 +03:00
|
|
|
type IBlockCreatedResponse,
|
2025-02-20 20:22:05 +03:00
|
|
|
type IConstituentaReference,
|
2025-04-20 18:06:18 +03:00
|
|
|
type ICreateBlockDTO,
|
2025-04-20 16:20:43 +03:00
|
|
|
type ICreateOperationDTO,
|
2025-04-20 18:06:18 +03:00
|
|
|
type IDeleteBlockDTO,
|
2025-04-20 16:20:43 +03:00
|
|
|
type IDeleteOperationDTO,
|
2025-02-20 20:22:05 +03:00
|
|
|
type IInputCreatedResponse,
|
|
|
|
type IOperationCreatedResponse,
|
|
|
|
type IOperationSchemaDTO,
|
2025-04-06 15:47:40 +03:00
|
|
|
type IOssLayout,
|
2025-04-20 16:20:43 +03:00
|
|
|
type IRelocateConstituentsDTO,
|
2025-02-20 20:22:05 +03:00
|
|
|
type ITargetOperation,
|
2025-04-20 18:06:18 +03:00
|
|
|
type IUpdateBlockDTO,
|
2025-04-20 16:20:43 +03:00
|
|
|
type IUpdateInputDTO,
|
|
|
|
type IUpdateOperationDTO,
|
2025-04-21 20:35:40 +03:00
|
|
|
schemaBlockCreatedResponse,
|
2025-02-18 23:38:33 +03:00
|
|
|
schemaConstituentaReference,
|
2025-04-13 23:13:04 +03:00
|
|
|
schemaInputCreatedResponse,
|
2025-02-18 23:38:33 +03:00
|
|
|
schemaOperationCreatedResponse,
|
|
|
|
schemaOperationSchema
|
2025-02-12 20:53:01 +03:00
|
|
|
} from './types';
|
2025-01-23 19:41:31 +03:00
|
|
|
|
|
|
|
export const ossApi = {
|
2025-02-12 20:53:01 +03:00
|
|
|
baseKey: KEYS.oss,
|
2025-01-23 19:41:31 +03:00
|
|
|
|
2025-02-12 15:12:59 +03:00
|
|
|
getOssQueryOptions: ({ itemID }: { itemID?: number }) => {
|
2025-01-23 19:41:31 +03:00
|
|
|
return queryOptions({
|
2025-02-12 20:53:01 +03:00
|
|
|
queryKey: KEYS.composite.ossItem({ itemID }),
|
2025-01-23 19:41:31 +03:00
|
|
|
staleTime: DELAYS.staleShort,
|
|
|
|
queryFn: meta =>
|
|
|
|
!itemID
|
|
|
|
? undefined
|
2025-01-30 19:55:24 +03:00
|
|
|
: axiosGet<IOperationSchemaDTO>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaOperationSchema,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/details`,
|
|
|
|
options: { signal: meta.signal }
|
|
|
|
})
|
2025-01-23 19:41:31 +03:00
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2025-04-06 15:47:40 +03:00
|
|
|
updateLayout: ({ itemID, data, isSilent }: { itemID: number; data: IOssLayout; isSilent?: boolean }) =>
|
2025-01-28 19:45:31 +03:00
|
|
|
axiosPatch({
|
2025-04-06 13:28:00 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/update-layout`,
|
2025-01-28 19:45:31 +03:00
|
|
|
request: {
|
2025-04-06 15:47:40 +03:00
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: isSilent ? undefined : infoMsg.changesSaved
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
2025-01-23 19:41:31 +03:00
|
|
|
|
2025-04-20 18:06:18 +03:00
|
|
|
createBlock: ({ itemID, data }: { itemID: number; data: ICreateBlockDTO }) =>
|
|
|
|
axiosPost<ICreateBlockDTO, IBlockCreatedResponse>({
|
2025-04-21 20:35:40 +03:00
|
|
|
schema: schemaBlockCreatedResponse,
|
2025-04-20 18:06:18 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/create-block`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
|
|
|
successMessage: infoMsg.changesSaved
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
updateBlock: ({ itemID, data }: { itemID: number; data: IUpdateBlockDTO }) =>
|
|
|
|
axiosPatch<IUpdateBlockDTO, IOperationSchemaDTO>({
|
|
|
|
schema: schemaOperationSchema,
|
2025-04-22 13:58:25 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/update-block`,
|
2025-04-20 18:06:18 +03:00
|
|
|
request: {
|
|
|
|
data: data,
|
|
|
|
successMessage: infoMsg.changesSaved
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
deleteBlock: ({ itemID, data }: { itemID: number; data: IDeleteBlockDTO }) =>
|
|
|
|
axiosPatch<IDeleteBlockDTO, IOperationSchemaDTO>({
|
|
|
|
schema: schemaOperationSchema,
|
2025-04-21 20:35:40 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/delete-block`,
|
2025-04-20 18:06:18 +03:00
|
|
|
request: {
|
|
|
|
data: data,
|
|
|
|
successMessage: infoMsg.operationDestroyed
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
|
2025-04-20 16:20:43 +03:00
|
|
|
createOperation: ({ itemID, data }: { itemID: number; data: ICreateOperationDTO }) =>
|
|
|
|
axiosPost<ICreateOperationDTO, IOperationCreatedResponse>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaOperationCreatedResponse,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/create-operation`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: response => infoMsg.newOperation(response.new_operation.alias)
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
2025-04-20 18:06:18 +03:00
|
|
|
updateOperation: ({ itemID, data }: { itemID: number; data: IUpdateOperationDTO }) =>
|
|
|
|
axiosPatch<IUpdateOperationDTO, IOperationSchemaDTO>({
|
|
|
|
schema: schemaOperationSchema,
|
|
|
|
endpoint: `/api/oss/${itemID}/update-operation`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
|
|
|
successMessage: infoMsg.changesSaved
|
|
|
|
}
|
|
|
|
}),
|
2025-04-20 16:20:43 +03:00
|
|
|
deleteOperation: ({ itemID, data }: { itemID: number; data: IDeleteOperationDTO }) =>
|
|
|
|
axiosPatch<IDeleteOperationDTO, IOperationSchemaDTO>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaOperationSchema,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/delete-operation`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: infoMsg.operationDestroyed
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
2025-04-20 18:06:18 +03:00
|
|
|
|
2025-04-20 16:20:43 +03:00
|
|
|
createInput: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
|
2025-01-28 19:45:31 +03:00
|
|
|
axiosPatch<ITargetOperation, IInputCreatedResponse>({
|
2025-04-13 23:13:04 +03:00
|
|
|
schema: schemaInputCreatedResponse,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/create-input`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: infoMsg.newLibraryItem
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
2025-04-20 16:20:43 +03:00
|
|
|
updateInput: ({ itemID, data }: { itemID: number; data: IUpdateInputDTO }) =>
|
|
|
|
axiosPatch<IUpdateInputDTO, IOperationSchemaDTO>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaOperationSchema,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/set-input`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: infoMsg.changesSaved
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
2025-04-20 16:20:43 +03:00
|
|
|
executeOperation: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
|
2025-01-30 19:55:24 +03:00
|
|
|
axiosPost<ITargetOperation, IOperationSchemaDTO>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaOperationSchema,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: `/api/oss/${itemID}/execute-operation`,
|
|
|
|
request: {
|
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: infoMsg.operationExecuted
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
|
|
|
|
2025-04-20 16:20:43 +03:00
|
|
|
relocateConstituents: (data: IRelocateConstituentsDTO) =>
|
|
|
|
axiosPost<IRelocateConstituentsDTO, IOperationSchemaDTO>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaOperationSchema,
|
2025-02-10 15:48:58 +03:00
|
|
|
endpoint: `/api/oss/relocate-constituents`,
|
2025-01-28 19:45:31 +03:00
|
|
|
request: {
|
|
|
|
data: data,
|
2025-02-12 01:34:35 +03:00
|
|
|
successMessage: infoMsg.changesSaved
|
2025-01-28 19:45:31 +03:00
|
|
|
}
|
|
|
|
}),
|
2025-02-22 12:20:22 +03:00
|
|
|
getPredecessor: (cstID: number) =>
|
|
|
|
axiosPost<{ target: number }, IConstituentaReference>({
|
2025-02-18 23:38:33 +03:00
|
|
|
schema: schemaConstituentaReference,
|
2025-01-28 19:45:31 +03:00
|
|
|
endpoint: '/api/oss/get-predecessor',
|
2025-02-22 12:20:22 +03:00
|
|
|
request: { data: { target: cstID } }
|
2025-01-28 19:45:31 +03:00
|
|
|
})
|
2025-01-23 19:41:31 +03:00
|
|
|
};
|