From 2be5b33183980dce3ad7caa9aa0d3b947dc63d77 Mon Sep 17 00:00:00 2001 From: x Date: Sat, 24 Jan 2026 17:39:01 +0100 Subject: [PATCH] feat: Add scripts to copy thumbnails and generate dummy items, and improve item deletion to handle avatar foreign key constraints. --- debug/fix_deleted.mjs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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++; }