From 71df0de3dfa90f466a88e19de45a1dfc701ed9c1 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Sun, 18 Jan 2026 10:41:12 +0000 Subject: [PATCH] fix(*): Address PR comments --- .../RegionGameMappingRepository.ts | 6 ++++-- src/routes/api/pokedexes/+server.ts | 18 +++++++++--------- src/routes/api/pokedexes/[id]/+server.ts | 2 +- .../migrations/20260118000000_init_schema.sql | 1 + 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/lib/repositories/RegionGameMappingRepository.ts b/src/lib/repositories/RegionGameMappingRepository.ts index 1f543fc..40cebe7 100644 --- a/src/lib/repositories/RegionGameMappingRepository.ts +++ b/src/lib/repositories/RegionGameMappingRepository.ts @@ -19,10 +19,12 @@ class RegionGameMappingRepository { } async update(id: string, data: Partial): Promise { - void id; if (!data.region || !data.game) return null; + const normalizedId = Number(id); + const resolvedId = Number.isFinite(normalizedId) ? normalizedId : data.id; + if (typeof resolvedId !== 'number' || !Number.isFinite(resolvedId)) return null; return { - id: data.id, + id: resolvedId, region: data.region, game: data.game }; diff --git a/src/routes/api/pokedexes/+server.ts b/src/routes/api/pokedexes/+server.ts index eba0ac7..feca5ef 100644 --- a/src/routes/api/pokedexes/+server.ts +++ b/src/routes/api/pokedexes/+server.ts @@ -39,20 +39,20 @@ export const POST = async (event: RequestEvent) => { createdPokedexId = pokedex._id; createdPokedexName = pokedex.name; - const resolvedDexScopes = await resolveDexScopes(event.locals.supabase, { - ...pokedex, - dexScopes: requestedDexScopes - }); - await setPokedexDexScopes(event.locals.supabase, pokedex._id, resolvedDexScopes); - pokedex.dexScopes = resolvedDexScopes; - - // Populate pokedex_entries_mapping table with expected entries + // Populate dex scopes and pokedex_entries_mapping table with expected entries try { + const resolvedDexScopes = await resolveDexScopes(event.locals.supabase, { + ...pokedex, + dexScopes: requestedDexScopes + }); + await setPokedexDexScopes(event.locals.supabase, pokedex._id, resolvedDexScopes); + pokedex.dexScopes = resolvedDexScopes; + await populatePokedexMappings(event.locals.supabase, pokedex._id, pokedex); } catch (mappingError) { // Rollback: delete the partially-initialised pokedex to prevent dangling records console.error( - `Failed to populate pokedex mappings for pokedex id="${createdPokedexId}" name="${createdPokedexName}":`, + `Failed to initialize pokedex id="${createdPokedexId}" name="${createdPokedexName}":`, mappingError ); try { diff --git a/src/routes/api/pokedexes/[id]/+server.ts b/src/routes/api/pokedexes/[id]/+server.ts index 6e507bf..3d44c70 100644 --- a/src/routes/api/pokedexes/[id]/+server.ts +++ b/src/routes/api/pokedexes/[id]/+server.ts @@ -82,6 +82,7 @@ export const PUT = async (event: RequestEvent) => { ...pokedex, dexScopes: requestedDexScopes }); + pokedex.dexScopes = resolvedDexScopes; const existingDexScopes = new Set(existingPokedex.dexScopes || []); const nextDexScopes = new Set(resolvedDexScopes); @@ -91,7 +92,6 @@ export const PUT = async (event: RequestEvent) => { if (dexScopesChanged) { await setPokedexDexScopes(event.locals.supabase, id, resolvedDexScopes); - pokedex.dexScopes = resolvedDexScopes; } // Recalculate pokedex_entries_mapping if configuration changed diff --git a/supabase/migrations/20260118000000_init_schema.sql b/supabase/migrations/20260118000000_init_schema.sql index be316a8..2057d33 100644 --- a/supabase/migrations/20260118000000_init_schema.sql +++ b/supabase/migrations/20260118000000_init_schema.sql @@ -501,6 +501,7 @@ RETURNS TABLE ( updated_at TIMESTAMPTZ ) SECURITY DEFINER +SET search_path = public, pg_temp LANGUAGE plpgsql AS $$ DECLARE