71 lines
2.0 KiB
TypeScript
71 lines
2.0 KiB
TypeScript
![]() |
import { queryOptions } from '@tanstack/react-query';
|
||
|
|
||
|
import { axiosDelete, axiosGet, axiosPatch, axiosPost } from '@/backend/api-transport';
|
||
|
import { DELAYS, KEYS } from '@/backend/configuration';
|
||
|
import { infoMsg } from '@/utils/labels';
|
||
|
|
||
|
import {
|
||
|
type ICreatePromptTemplateDTO,
|
||
|
type IPromptTemplateDTO,
|
||
|
type IPromptTemplateListDTO,
|
||
|
type IUpdatePromptTemplateDTO,
|
||
|
schemaPromptTemplate,
|
||
|
schemaPromptTemplateList
|
||
|
} from './types';
|
||
|
|
||
|
export const promptsApi = {
|
||
|
baseKey: KEYS.prompts,
|
||
|
|
||
|
getAvailableTemplatesQueryOptions: () =>
|
||
|
queryOptions({
|
||
|
queryKey: [KEYS.prompts, 'available'] as const,
|
||
|
staleTime: DELAYS.staleShort,
|
||
|
queryFn: meta =>
|
||
|
axiosGet<IPromptTemplateListDTO>({
|
||
|
schema: schemaPromptTemplateList,
|
||
|
endpoint: '/api/prompts/available/',
|
||
|
options: { signal: meta.signal }
|
||
|
})
|
||
|
}),
|
||
|
|
||
|
getPromptTemplateQueryOptions: (id: number) =>
|
||
|
queryOptions({
|
||
|
queryKey: [KEYS.prompts, id],
|
||
|
staleTime: DELAYS.staleShort,
|
||
|
queryFn: meta =>
|
||
|
axiosGet<IPromptTemplateDTO>({
|
||
|
schema: schemaPromptTemplate,
|
||
|
endpoint: `/api/prompts/${id}/`,
|
||
|
options: { signal: meta.signal }
|
||
|
})
|
||
|
}),
|
||
|
|
||
|
createPromptTemplate: (data: ICreatePromptTemplateDTO) =>
|
||
|
axiosPost<ICreatePromptTemplateDTO, IPromptTemplateDTO>({
|
||
|
schema: schemaPromptTemplate,
|
||
|
endpoint: '/api/prompts/',
|
||
|
request: {
|
||
|
data: data,
|
||
|
successMessage: infoMsg.changesSaved
|
||
|
}
|
||
|
}),
|
||
|
|
||
|
updatePromptTemplate: (id: number, data: IUpdatePromptTemplateDTO) =>
|
||
|
axiosPatch<IUpdatePromptTemplateDTO, IPromptTemplateDTO>({
|
||
|
schema: schemaPromptTemplate,
|
||
|
endpoint: `/api/prompts/${id}/`,
|
||
|
request: {
|
||
|
data: data,
|
||
|
successMessage: infoMsg.changesSaved
|
||
|
}
|
||
|
}),
|
||
|
|
||
|
deletePromptTemplate: (id: number) =>
|
||
|
axiosDelete({
|
||
|
endpoint: `/api/prompts/${id}/`,
|
||
|
request: {
|
||
|
successMessage: infoMsg.changesSaved
|
||
|
}
|
||
|
})
|
||
|
} as const;
|