ConceptPortal-public/rsconcept/frontend/src/features/oss/backend/api.ts

120 lines
3.6 KiB
TypeScript
Raw Normal View History

import { queryOptions } from '@tanstack/react-query';
import { ITargetCst } from '@/features/rsform/backend/types';
import { IConstituentaReference } from '@/features/rsform/models/rsform';
2025-02-12 21:36:25 +03:00
2025-02-11 12:35:14 +03:00
import { axiosGet, axiosPatch, axiosPost } from '@/backend/apiTransport';
import { DELAYS, KEYS } from '@/backend/configuration';
import { infoMsg } from '@/utils/labels';
import {
ICstRelocateDTO,
IInputCreatedResponse,
IInputUpdateDTO,
IOperationCreatedResponse,
IOperationCreateDTO,
IOperationDeleteDTO,
IOperationPosition,
IOperationSchemaDTO,
IOperationUpdateDTO,
ITargetOperation
} from './types';
export const ossApi = {
baseKey: KEYS.oss,
2025-02-12 15:13:37 +03:00
getOssQueryOptions: ({ itemID }: { itemID?: number }) => {
return queryOptions({
queryKey: KEYS.composite.ossItem({ itemID }),
staleTime: DELAYS.staleShort,
queryFn: meta =>
!itemID
? undefined
: axiosGet<IOperationSchemaDTO>({
endpoint: `/api/oss/${itemID}/details`,
options: { signal: meta.signal }
})
});
},
updatePositions: ({
itemID,
positions,
isSilent
}: {
2025-02-12 15:13:37 +03:00
itemID: number;
positions: IOperationPosition[];
isSilent?: boolean;
}) =>
axiosPatch({
endpoint: `/api/oss/${itemID}/update-positions`,
request: {
data: { positions: positions },
successMessage: isSilent ? undefined : infoMsg.changesSaved
}
}),
2025-02-12 15:13:37 +03:00
operationCreate: ({ itemID, data }: { itemID: number; data: IOperationCreateDTO }) =>
axiosPost<IOperationCreateDTO, IOperationCreatedResponse>({
endpoint: `/api/oss/${itemID}/create-operation`,
request: {
data: data,
successMessage: response => infoMsg.newOperation(response.new_operation.alias)
}
}),
2025-02-12 15:13:37 +03:00
operationDelete: ({ itemID, data }: { itemID: number; data: IOperationDeleteDTO }) =>
2025-02-11 12:35:14 +03:00
axiosPatch<IOperationDeleteDTO, IOperationSchemaDTO>({
endpoint: `/api/oss/${itemID}/delete-operation`,
request: {
data: data,
successMessage: infoMsg.operationDestroyed
}
}),
2025-02-12 15:13:37 +03:00
inputCreate: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
axiosPatch<ITargetOperation, IInputCreatedResponse>({
endpoint: `/api/oss/${itemID}/create-input`,
request: {
data: data,
successMessage: infoMsg.newLibraryItem
}
}),
2025-02-12 15:13:37 +03:00
inputUpdate: ({ itemID, data }: { itemID: number; data: IInputUpdateDTO }) =>
axiosPatch<IInputUpdateDTO, IOperationSchemaDTO>({
endpoint: `/api/oss/${itemID}/set-input`,
request: {
data: data,
successMessage: infoMsg.changesSaved
}
}),
2025-02-12 15:13:37 +03:00
operationUpdate: ({ itemID, data }: { itemID: number; data: IOperationUpdateDTO }) =>
axiosPatch<IOperationUpdateDTO, IOperationSchemaDTO>({
endpoint: `/api/oss/${itemID}/update-operation`,
request: {
data: data,
successMessage: infoMsg.changesSaved
}
}),
2025-02-12 15:13:37 +03:00
operationExecute: ({ itemID, data }: { itemID: number; data: ITargetOperation }) =>
axiosPost<ITargetOperation, IOperationSchemaDTO>({
endpoint: `/api/oss/${itemID}/execute-operation`,
request: {
data: data,
successMessage: infoMsg.operationExecuted
}
}),
2025-02-10 15:49:56 +03:00
relocateConstituents: (data: ICstRelocateDTO) =>
axiosPost<ICstRelocateDTO, IOperationSchemaDTO>({
2025-02-10 15:49:56 +03:00
endpoint: `/api/oss/relocate-constituents`,
request: {
data: data,
successMessage: infoMsg.changesSaved
}
}),
getPredecessor: (data: ITargetCst) =>
axiosPost<ITargetCst, IConstituentaReference>({
endpoint: '/api/oss/get-predecessor',
request: { data: data }
})
};