mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-12 18:43:45 +00:00
fix(*): Address PR comments
This commit is contained in:
@@ -19,10 +19,12 @@ class RegionGameMappingRepository {
|
||||
}
|
||||
|
||||
async update(id: string, data: Partial<RegionGameMapping>): Promise<RegionGameMapping | null> {
|
||||
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
|
||||
};
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -501,6 +501,7 @@ RETURNS TABLE (
|
||||
updated_at TIMESTAMPTZ
|
||||
)
|
||||
SECURITY DEFINER
|
||||
SET search_path = public, pg_temp
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
|
||||
Reference in New Issue
Block a user