/
voting
/
frontend
Обзор
Документация
Войти
/
voting
/
frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
src/api/admin.query.ts
102 строки
3 KB
TimPulin
033-admin-react-query-hooks
18 июл 2026, 23:48
18 июл 2026, 23:48
f10dd2d
Код
Авторство
О чём код?
import { queryOptions, useQuery } from '@tanstack/react-query' import { adminService } from './admin.service' export const adminKeys = { all: ['admin'] as const, nominations: () => [...adminKeys.all, 'nominations'] as const, nominationsList: (eventId?: string) => [...adminKeys.nominations(), 'list', { eventId }] as const, nominationDetail: (id: string) => [...adminKeys.nominations(), 'detail', id] as const, nominees: () => [...adminKeys.all, 'nominees'] as const, nomineesList: (nominationId?: string) => [...adminKeys.nominees(), 'list', { nominationId }] as const, nomineeDetail: (id: string) => [...adminKeys.nominees(), 'detail', id] as const, events: () => [...adminKeys.all, 'events'] as const, eventsList: () => [...adminKeys.events(), 'list'] as const, eventDetail: (id: string) => [...adminKeys.events(), 'detail', id] as const, currentNomination: (eventId: string) => [...adminKeys.events(), 'current-nomination', eventId] as const } export function nominationsListQueryOptions(eventId?: string) { return queryOptions({ queryKey: adminKeys.nominationsList(eventId), queryFn: () => adminService.listNominations(eventId) }) } export function useNominationsList(eventId?: string) { return useQuery(nominationsListQueryOptions(eventId)) } export function nominationDetailQueryOptions(id: string) { return queryOptions({ queryKey: adminKeys.nominationDetail(id), queryFn: () => adminService.getNomination(id), enabled: Boolean(id) }) } export function useNominationDetail(id: string) { return useQuery(nominationDetailQueryOptions(id)) } export function nomineesListQueryOptions(nominationId?: string) { return queryOptions({ queryKey: adminKeys.nomineesList(nominationId), queryFn: () => adminService.listNominees(nominationId) }) } export function useNomineesList(nominationId?: string) { return useQuery(nomineesListQueryOptions(nominationId)) } export function nomineeDetailQueryOptions(id: string) { return queryOptions({ queryKey: adminKeys.nomineeDetail(id), queryFn: () => adminService.getNominee(id), enabled: Boolean(id) }) } export function useNomineeDetail(id: string) { return useQuery(nomineeDetailQueryOptions(id)) } export function eventsListQueryOptions() { return queryOptions({ queryKey: adminKeys.eventsList(), queryFn: () => adminService.listEvents() }) } export function useEventsList() { return useQuery(eventsListQueryOptions()) } export function eventDetailQueryOptions(id: string) { return queryOptions({ queryKey: adminKeys.eventDetail(id), queryFn: () => adminService.getEvent(id), enabled: Boolean(id) }) } export function useEventDetail(id: string) { return useQuery(eventDetailQueryOptions(id)) } export function currentNominationQueryOptions(eventId: string) { return queryOptions({ queryKey: adminKeys.currentNomination(eventId), queryFn: () => adminService.getCurrentNomination(eventId), enabled: Boolean(eventId) }) } export function useCurrentNomination(eventId: string) { return useQuery(currentNominationQueryOptions(eventId)) }