Files
emaui/apps/backoffice/src/app/features/exam/api/exam-api.ts
2026-06-26 12:10:38 +03:00

56 lines
1.5 KiB
TypeScript

import { baseApi } from '@ema-platform/api';
import type {
Exam,
ListResponse,
CreateExamPayload,
UpdateExamPayload,
AssignQuestionsPayload,
} from '../types/exam';
const examApi = baseApi.injectEndpoints({
endpoints: (builder) => ({
getExams: builder.query<ListResponse<Exam>, void>({
query: () => '/exams?q=i=questions',
providesTags: ['Api'],
}),
getExam: builder.query<Exam, string>({
query: (id) => `/exams/${id}?i=questions`,
providesTags: ['Api'],
}),
createExam: builder.mutation<Exam, CreateExamPayload>({
query: (body) => ({ url: '/exams', method: 'POST', body }),
invalidatesTags: ['Api'],
}),
updateExam: builder.mutation<Exam, UpdateExamPayload>({
query: ({ id, ...body }) => ({
url: `/exams/${id}`,
method: 'PUT',
body,
}),
invalidatesTags: ['Api'],
}),
deleteExam: builder.mutation<void, string>({
query: (id) => ({ url: `/exams/${id}`, method: 'DELETE' }),
invalidatesTags: ['Api'],
}),
assignQuestions: builder.mutation<Exam, AssignQuestionsPayload>({
query: ({ examId, questionIds, remark }) => ({
url: `/exams/${examId}/questions`,
method: 'POST',
body: { examId, questionIds, remark },
}),
invalidatesTags: ['Api'],
}),
}),
overrideExisting: false,
});
export const {
useGetExamsQuery,
useGetExamQuery,
useCreateExamMutation,
useUpdateExamMutation,
useDeleteExamMutation,
useAssignQuestionsMutation,
} = examApi;