/
voting
/
frontend
Обзор
Документация
Войти
/
voting
/
frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
src/api/admin.mutation.ts
189 строк
6 KB
pulintim
Запрос на слияние 'features/EventDataLoader' (
#25
) из features/EventDataLoader в main
19 июл 2026, 15:37
Верифицирован
19 июл 2026, 15:37
9809747
Код
Авторство
О чём код?
import { useMutation, useQueryClient } from '@tanstack/react-query' import { adminKeys } from './admin.query' import { adminService } from './admin.service' import type { BulkNominationsDto, BulkNomineesDto, CreateEventDto, CreateNominationDto, CreateNomineeDto, SetCurrentNominationDto, SetScreenDto, UpdateEventDto, UpdateNominationDto, UpdateNomineeDto } from './types' export function useCreateNomination() { const queryClient = useQueryClient() return useMutation({ mutationFn: (dto: CreateNominationDto) => adminService.createNomination(dto), onSuccess: (_data, dto) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nominations() }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominationsList(dto.eventId) }) } }) } export function useUpdateNomination() { const queryClient = useQueryClient() return useMutation({ mutationFn: ({ id, dto }: { id: string; dto: UpdateNominationDto }) => adminService.updateNomination(id, dto), onSuccess: (_data, { id }) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nominationDetail(id) }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominations() }) } }) } export function useRemoveNomination() { const queryClient = useQueryClient() return useMutation({ mutationFn: (id: string) => adminService.removeNomination(id), onSuccess: (_data, id) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nominationDetail(id) }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominations() }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominees() }) } }) } export function useBulkSyncNominations() { const queryClient = useQueryClient() return useMutation({ mutationFn: (dto: BulkNominationsDto) => adminService.bulkSyncNominations(dto), onSuccess: (_data, dto) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nominations() }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominationsList(dto.eventId) }) } }) } export function useCreateNominee() { const queryClient = useQueryClient() return useMutation({ mutationFn: (dto: CreateNomineeDto) => adminService.createNominee(dto), onSuccess: (_data, dto) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nominees() }) void queryClient.invalidateQueries({ queryKey: adminKeys.nomineesList(dto.nominationId) }) } }) } export function useUpdateNominee() { const queryClient = useQueryClient() return useMutation({ mutationFn: ({ id, dto }: { id: string; dto: UpdateNomineeDto }) => adminService.updateNominee(id, dto), onSuccess: (_data, { id }) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nomineeDetail(id) }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominees() }) } }) } export function useRemoveNominee() { const queryClient = useQueryClient() return useMutation({ mutationFn: (id: string) => adminService.removeNominee(id), onSuccess: (_data, id) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nomineeDetail(id) }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominees() }) } }) } export function useBulkSyncNominees() { const queryClient = useQueryClient() return useMutation({ mutationFn: (dto: BulkNomineesDto) => adminService.bulkSyncNominees(dto), onSuccess: (_data, dto) => { void queryClient.invalidateQueries({ queryKey: adminKeys.nomineesList(dto.nominationId) }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominees() }) } }) } export function useCreateEvent() { const queryClient = useQueryClient() return useMutation({ mutationFn: (dto: CreateEventDto) => adminService.createEvent(dto), onSuccess: () => { void queryClient.invalidateQueries({ queryKey: adminKeys.events() }) } }) } export function useUpdateEvent() { const queryClient = useQueryClient() return useMutation({ mutationFn: ({ id, dto }: { id: string; dto: UpdateEventDto }) => adminService.updateEvent(id, dto), onSuccess: (_data, { id }) => { void queryClient.invalidateQueries({ queryKey: adminKeys.eventDetail(id) }) void queryClient.invalidateQueries({ queryKey: adminKeys.events() }) } }) } export function useRemoveEvent() { const queryClient = useQueryClient() return useMutation({ mutationFn: (id: string) => adminService.removeEvent(id), onSuccess: () => { void queryClient.invalidateQueries({ queryKey: adminKeys.events() }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominations() }) void queryClient.invalidateQueries({ queryKey: adminKeys.nominees() }) } }) } export function useSetCurrentNomination() { const queryClient = useQueryClient() return useMutation({ mutationFn: ({ eventId, dto }: { eventId: string; dto: SetCurrentNominationDto }) => adminService.setCurrentNomination(eventId, dto), onSuccess: (_data, { eventId }) => { void queryClient.invalidateQueries({ queryKey: adminKeys.currentNomination(eventId) }) void queryClient.invalidateQueries({ queryKey: adminKeys.eventDetail(eventId) }) } }) } export function useSetScreen() { const queryClient = useQueryClient() return useMutation({ mutationFn: ({ eventId, dto }: { eventId: string; dto: SetScreenDto }) => adminService.setScreen(eventId, dto), onSuccess: (_data, { eventId }) => { void queryClient.invalidateQueries({ queryKey: adminKeys.eventDetail(eventId) }) void queryClient.invalidateQueries({ queryKey: adminKeys.currentNomination(eventId) }) } }) }