Spaces:
Sleeping
Sleeping
| /** | |
| * Query key factory for TanStack Query | |
| * Provides type-safe, hierarchical query keys for all API endpoints | |
| */ | |
| import type { VoteValue } from '../../types/api'; | |
| export interface VoteFilters { | |
| types?: string[]; | |
| subjects?: string[]; | |
| dateFrom?: string; | |
| dateTo?: string; | |
| voteValues?: VoteValue[]; | |
| search?: string; | |
| } | |
| export const queryKeys = { | |
| // Politicians | |
| politicians: { | |
| all: ['politicians'] as const, | |
| search: (query: string) => ['politicians', 'search', query] as const, | |
| detail: (id: number | string) => ['politicians', 'detail', id] as const, | |
| votes: ( | |
| id: number | string, | |
| page: number, | |
| sort: 'ASC' | 'DESC', | |
| filters?: VoteFilters | |
| ) => ['politicians', 'votes', id, page, sort, filters] as const, | |
| votesDateRange: (id: number | string) => | |
| ['politicians', 'votes', id, 'date-range'] as const, | |
| donations: (id: number | string) => | |
| ['politicians', 'donations', id] as const, | |
| donationsFiltered: (id: number | string, topic: string) => | |
| ['politicians', 'donations', id, 'filtered', topic] as const, | |
| }, | |
| // Donors | |
| donors: { | |
| all: ['donors'] as const, | |
| search: (query: string) => ['donors', 'search', query] as const, | |
| detail: (id: number | string) => ['donors', 'detail', id] as const, | |
| donations: (id: number | string) => ['donors', 'donations', id] as const, | |
| }, | |
| // Bills | |
| bills: { | |
| all: ['bills'] as const, | |
| subjects: () => ['bills', 'subjects'] as const, | |
| }, | |
| } as const; | |