diff --git a/src/lib/api/queries/entity.queries.ts b/src/lib/api/queries/entity.queries.ts index dca8b8ce..ce764096 100644 --- a/src/lib/api/queries/entity.queries.ts +++ b/src/lib/api/queries/entity.queries.ts @@ -21,25 +21,25 @@ import { entityAdapter, type WeaponKeyQueryParams } from '$lib/api/adapters/enti * import { createQuery } from '@tanstack/svelte-query' * import { entityQueries } from '$lib/api/queries/entity.queries' * - * // Single weapon by ID - * const weapon = createQuery(() => entityQueries.weapon(id)) + * // Single weapon by granblueId + * const weapon = createQuery(() => entityQueries.weapon(granblueId)) * - * // Single character by ID - * const character = createQuery(() => entityQueries.character(id)) + * // Single character by granblueId + * const character = createQuery(() => entityQueries.character(granblueId)) * ``` */ export const entityQueries = { /** * Single weapon query options * - * @param id - Weapon ID + * @param granblueId - Weapon granblueId (e.g., "1040001000") * @returns Query options for fetching a single weapon */ - weapon: (id: string) => + weapon: (granblueId: string) => queryOptions({ - queryKey: ['weapon', id] as const, - queryFn: () => entityAdapter.getWeapon(id), - enabled: !!id, + queryKey: ['weapon', granblueId] as const, + queryFn: () => entityAdapter.getWeapon(granblueId), + enabled: !!granblueId, staleTime: 1000 * 60 * 60, // 1 hour - canonical data rarely changes gcTime: 1000 * 60 * 60 * 24 // 24 hours }), @@ -47,14 +47,14 @@ export const entityQueries = { /** * Single character query options * - * @param id - Character ID + * @param granblueId - Character granblueId (e.g., "3040001000") * @returns Query options for fetching a single character */ - character: (id: string) => + character: (granblueId: string) => queryOptions({ - queryKey: ['character', id] as const, - queryFn: () => entityAdapter.getCharacter(id), - enabled: !!id, + queryKey: ['character', granblueId] as const, + queryFn: () => entityAdapter.getCharacter(granblueId), + enabled: !!granblueId, staleTime: 1000 * 60 * 60, // 1 hour - canonical data rarely changes gcTime: 1000 * 60 * 60 * 24 // 24 hours }), @@ -62,14 +62,14 @@ export const entityQueries = { /** * Single summon query options * - * @param id - Summon ID + * @param granblueId - Summon granblueId (e.g., "2040001000") * @returns Query options for fetching a single summon */ - summon: (id: string) => + summon: (granblueId: string) => queryOptions({ - queryKey: ['summon', id] as const, - queryFn: () => entityAdapter.getSummon(id), - enabled: !!id, + queryKey: ['summon', granblueId] as const, + queryFn: () => entityAdapter.getSummon(granblueId), + enabled: !!granblueId, staleTime: 1000 * 60 * 60, // 1 hour - canonical data rarely changes gcTime: 1000 * 60 * 60 * 24 // 24 hours }), @@ -186,8 +186,8 @@ export const entityQueries = { * * const queryClient = useQueryClient() * - * // Invalidate a specific weapon - * queryClient.invalidateQueries({ queryKey: entityKeys.weapon('abc123') }) + * // Invalidate a specific weapon by granblueId + * queryClient.invalidateQueries({ queryKey: entityKeys.weapon('1040001000') }) * * // Invalidate all weapons * queryClient.invalidateQueries({ queryKey: entityKeys.weapons() }) @@ -195,11 +195,11 @@ export const entityQueries = { */ export const entityKeys = { weapons: () => ['weapon'] as const, - weapon: (id: string) => [...entityKeys.weapons(), id] as const, + weapon: (granblueId: string) => [...entityKeys.weapons(), granblueId] as const, characters: () => ['character'] as const, - character: (id: string) => [...entityKeys.characters(), id] as const, + character: (granblueId: string) => [...entityKeys.characters(), granblueId] as const, summons: () => ['summon'] as const, - summon: (id: string) => [...entityKeys.summons(), id] as const, + summon: (granblueId: string) => [...entityKeys.summons(), granblueId] as const, weaponKeys: (params?: WeaponKeyQueryParams) => ['weaponKeys', params?.seriesSlug, params?.slot, params?.group] as const, weaponSeriesList: () => ['weaponSeries', 'list'] as const, diff --git a/src/lib/features/database/characters/sections/CharacterMetadataSection.svelte b/src/lib/features/database/characters/sections/CharacterMetadataSection.svelte index 7950607e..1355fe51 100644 --- a/src/lib/features/database/characters/sections/CharacterMetadataSection.svelte +++ b/src/lib/features/database/characters/sections/CharacterMetadataSection.svelte @@ -101,7 +101,7 @@ {/if} {#if character.recruitedBy} - + {character.recruitedBy.name.en {#if weapon.recruits} - + {weapon.recruits.name.en { // Get parent data to access role const parentData = await parent() - const character = await entityAdapter.getCharacter(params.id) + const character = await entityAdapter.getCharacter(params.granblueId) if (!character) { throw error(404, 'Character not found') diff --git a/src/routes/(app)/database/characters/[id]/+page.svelte b/src/routes/(app)/database/characters/[granblueId]/+page.svelte similarity index 97% rename from src/routes/(app)/database/characters/[id]/+page.svelte rename to src/routes/(app)/database/characters/[granblueId]/+page.svelte index f5fe2508..c0a9d814 100644 --- a/src/routes/(app)/database/characters/[id]/+page.svelte +++ b/src/routes/(app)/database/characters/[granblueId]/+page.svelte @@ -50,7 +50,7 @@ // Use TanStack Query with SSR initial data const characterQuery = createQuery(() => ({ - ...entityQueries.character(data.character?.id ?? ''), + ...entityQueries.character(data.character?.granblueId ?? ''), ...withInitialData(data.character) })) @@ -60,7 +60,7 @@ const canEdit = $derived(userRole >= 7) // Edit URL for navigation - const editUrl = $derived(character?.id ? `/database/characters/${character.id}/edit` : undefined) + const editUrl = $derived(character?.granblueId ? `/database/characters/${character.granblueId}/edit` : undefined) // Query for related characters (same character_id) const relatedQuery = createQuery(() => ({ @@ -260,7 +260,7 @@