first commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import { useMutation, useQuery } from '@tanstack/vue-query'
|
||||
|
||||
import {
|
||||
apiAddAdminExam,
|
||||
apiDeleteAdminExam,
|
||||
apiGetAdminExams,
|
||||
apiGetAdminExamParticipants,
|
||||
apiShowAdminExam,
|
||||
apiShowAdminExamParticipant,
|
||||
apiUpdateAdminExam,
|
||||
} from '@/services/api/admin-exams'
|
||||
import { cleanFilters } from '@/utils/clean-filters'
|
||||
|
||||
export const adminExamsKeys = {
|
||||
all: ['admin', 'exams'],
|
||||
list: (filters, pagination) => ['admin', 'exams', 'list', filters, pagination],
|
||||
detail: (id) => ['admin', 'exams', 'detail', id],
|
||||
participants: (examId, filters, pagination) => [
|
||||
'admin',
|
||||
'exams',
|
||||
'participants',
|
||||
examId,
|
||||
filters,
|
||||
pagination,
|
||||
],
|
||||
participantDetail: (examId, participantId) => [
|
||||
'admin',
|
||||
'exams',
|
||||
'participants',
|
||||
examId,
|
||||
'detail',
|
||||
participantId,
|
||||
],
|
||||
}
|
||||
|
||||
export const useAdminExamsListQuery = (filtersRef, paginationRef, options = {}) =>
|
||||
useQuery({
|
||||
queryKey: ['admin', 'exams', 'list', filtersRef, paginationRef],
|
||||
queryFn: () => apiGetAdminExams({ ...cleanFilters(filtersRef.value), ...paginationRef.value }),
|
||||
...options,
|
||||
})
|
||||
|
||||
export const useAdminExamQuery = (idRef, options = {}) =>
|
||||
useQuery({
|
||||
queryKey: ['admin', 'exams', 'detail', idRef],
|
||||
queryFn: () => apiShowAdminExam(idRef.value),
|
||||
select: (response) => response?.data ?? response,
|
||||
...options,
|
||||
})
|
||||
|
||||
export const useAdminExamParticipantsQuery = (examIdRef, filtersRef, paginationRef, options = {}) =>
|
||||
useQuery({
|
||||
queryKey: ['admin', 'exams', 'participants', examIdRef, filtersRef, paginationRef],
|
||||
queryFn: () =>
|
||||
apiGetAdminExamParticipants(examIdRef.value, {
|
||||
...cleanFilters(filtersRef?.value || {}),
|
||||
...paginationRef?.value,
|
||||
}),
|
||||
...options,
|
||||
})
|
||||
|
||||
export const useAdminExamParticipantQuery = (examIdRef, participantIdRef, options = {}) =>
|
||||
useQuery({
|
||||
queryKey: ['admin', 'exams', 'participants', examIdRef, 'detail', participantIdRef],
|
||||
queryFn: () => apiShowAdminExamParticipant(examIdRef.value, participantIdRef.value),
|
||||
select: (response) => response?.data ?? response,
|
||||
...options,
|
||||
})
|
||||
|
||||
export const useAddAdminExamMutation = () =>
|
||||
useMutation({ mutationFn: (payload) => apiAddAdminExam(payload) })
|
||||
|
||||
export const useUpdateAdminExamMutation = () =>
|
||||
useMutation({ mutationFn: ({ id, payload }) => apiUpdateAdminExam(id, payload) })
|
||||
|
||||
export const useDeleteAdminExamMutation = () =>
|
||||
useMutation({ mutationFn: (id) => apiDeleteAdminExam(id) })
|
||||
Reference in New Issue
Block a user