Files
banu-front/src/services/query/student-exams.js
T
sajjadtalkhabi 1c665830b0
Deploy banu-front / deploy (push) Successful in 1m19s
fix
2026-06-05 14:41:38 +03:30

41 lines
1.3 KiB
JavaScript

import { cleanFilters } from '@/utils/clean-filters'
import { useMutation, useQuery } from '@tanstack/vue-query'
import {
apiGetStudentExams,
apiShowStudentExam,
apiSubmitStudentExamAttempt,
} from '@/services/api/student-exams'
export const studentExamsKeys = {
list: (filters, pagination) => ['student', 'exams', 'list', filters, pagination],
detail: (id) => ['student', 'exams', 'detail', id],
}
export const useStudentExamsListQuery = (filtersRef, paginationRef, options = {}) =>
useQuery({
queryKey: ['student', 'exams', 'list', filtersRef, paginationRef],
queryFn: () =>
apiGetStudentExams({
...cleanFilters(filtersRef.value),
...paginationRef.value,
}),
select: (response) => ({
data: response?.data?.items ?? response?.data ?? [],
meta: response?.data?.meta ?? response?.meta,
}),
...options,
})
export const useStudentExamQuery = (idRef, options = {}) =>
useQuery({
queryKey: ['student', 'exams', 'detail', idRef],
queryFn: () => apiShowStudentExam(idRef.value),
select: (response) => response?.data ?? response,
...options,
})
export const useSubmitStudentExamAttemptMutation = () =>
useMutation({
mutationFn: ({ id, payload }) => apiSubmitStudentExamAttempt(id, payload),
})