diff --git a/debug/fix_deleted.mjs b/debug/fix_deleted.mjs index 58818e2..670c5d9 100644 --- a/debug/fix_deleted.mjs +++ b/debug/fix_deleted.mjs @@ -41,7 +41,23 @@ import { promises as fs } from "fs"; pendingCount++; } catch { // Not in either? Broken. - console.log(`Item ${item.id} (${item.dest}) missing from both locations. Deleting...`); + console.log(`Item ${item.id} (${item.dest}) missing from both locations. Cleaning up...`); + + // 2. Fix FK constraint: Check if this item is used as an avatar + try { + // Find a safe fallback avatar (active item) + const fallback = await db`select id from items where active = true limit 1`; + if (fallback.length > 0) { + const safeId = fallback[0].id; + const users = await db`update "user_options" set avatar = ${safeId} where avatar = ${item.id} returning user_id`; + if (users.length > 0) { + console.log(` > Reassigned avatar for ${users.length} users (from ${item.id} to ${safeId})`); + } + } + } catch (fkErr) { + console.error(` ! Error fixing avatar FK for ${item.id}:`, fkErr.message); + } + await db`delete from items where id = ${item.id}`; brokenCount++; }