Files
emaui/apps/backoffice/src/app/features/question/api/question-api.ts
2026-08-07 11:50:07 +03:00

63 lines
1.9 KiB
TypeScript

import { baseApi } from '@ema-platform/api';
import type {
Question,
ListResponse,
CreateQuestionPayload,
UpdateQuestionPayload,
ReviewQuestionPayload,
} from '../types/question';
const questionApi = baseApi.injectEndpoints({
endpoints: (builder) => ({
getQuestions: builder.query<ListResponse<Question>, void>({
query: () => '/questions',
providesTags: ['Api'],
}),
getQuestion: builder.query<Question, string>({
query: (id) => `/questions/${id}`,
providesTags: ['Api'],
}),
createQuestion: builder.mutation<Question, CreateQuestionPayload>({
query: (body) => ({ url: '/questions', method: 'POST', body }),
invalidatesTags: ['Api'],
}),
updateQuestion: builder.mutation<Question, UpdateQuestionPayload>({
query: ({ id, ...body }) => ({
url: `/questions/${id}`,
method: 'PUT',
body,
}),
invalidatesTags: ['Api'],
}),
deleteQuestion: builder.mutation<void, string>({
query: (id) => ({ url: `/questions/${id}`, method: 'DELETE' }),
invalidatesTags: ['Api'],
}),
/** Hand a drafted or corrected item to the supervisor (US-EXAM-003). */
submitQuestion: builder.mutation<Question, string>({
query: (id) => ({ url: `/questions/${id}/submit`, method: 'POST' }),
invalidatesTags: ['Api'],
}),
/** Approve, reject or retire a bank item (US-EXAM-003). */
reviewQuestion: builder.mutation<Question, ReviewQuestionPayload>({
query: ({ id, ...body }) => ({
url: `/questions/${id}/review`,
method: 'POST',
body,
}),
invalidatesTags: ['Api'],
}),
}),
overrideExisting: false,
});
export const {
useGetQuestionsQuery,
useGetQuestionQuery,
useCreateQuestionMutation,
useUpdateQuestionMutation,
useDeleteQuestionMutation,
useSubmitQuestionMutation,
useReviewQuestionMutation,
} = questionApi;