require('dotenv').config(); const pool = require('../server/db'); async function main() { const { rows } = await pool.query(` WITH dups AS ( SELECT artist_id, title, year, array_agg(id ORDER BY id) AS ids FROM paintings GROUP BY artist_id, title, year HAVING COUNT(*) > 1 ), expanded AS ( SELECT artist_id, title, year, ids[1] AS keep_id, unnest(ids[2:]) AS drop_id FROM dups ) SELECT e.drop_id, (SELECT COUNT(*) FROM painting_influences pi WHERE pi.painting_id = e.drop_id OR pi.influenced_by_painting_id = e.drop_id) AS legacy_links, (SELECT COUNT(*) FROM painting_influence_sources pis WHERE pis.painting_id = e.drop_id OR pis.source_painting_id = e.drop_id) AS source_links FROM expanded e ORDER BY e.drop_id `); const withLinks = rows.filter((r) => Number(r.legacy_links) + Number(r.source_links) > 0); console.log(`Exact-duplicate drop candidates: ${rows.length}`); console.log(`With influence links (need merge before delete): ${withLinks.length}`); if (withLinks.length) console.table(withLinks); await pool.end(); } main().catch((err) => { console.error(err); process.exit(1); });