From 673c60a3595bc0ada0a9c1ada7245062559a0ddb Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Fri, 22 Aug 2025 16:40:06 +0200 Subject: [PATCH] Add error handling --- bin/update_comparisons.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/bin/update_comparisons.js b/bin/update_comparisons.js index cc28e1c..e63726f 100755 --- a/bin/update_comparisons.js +++ b/bin/update_comparisons.js @@ -2,8 +2,32 @@ const cmp = require('../lib/www/server/lib/comparisons'); +async function purgeComparisons () { + const groups = await cmp.groups(); + const comparisons = await cmp.getGroup(); + + const pids = new Set(Object.values(groups).flat().map( p => p.pid )); + const comparison_pids = new Set(comparisons.map( c => [ c.baseline_pid, c.monitor_pid ] ).flat()); + + for (const pid of comparison_pids) { + if (!pids.has(pid)) { + console.log(`${pid} no longer par of a group. Deleting comparisons`); + + staleComps = comparisons.filter( c => c.baseline_pid == pid || c.monitor_pid == pid ); + for (c of staleComps) { + console.log(`Deleting comparison ${c.baseline_pid} → ${c.monitor_pid}`); + await cmp.remove(c.baseline_pid, c.monitor_pid); + } + } + } +} + async function main () { + + console.log("Looking for unreferenced comparisons to purge"); + await purgeComparisons(); + console.log("Retrieving project groups"); const groups = await cmp.groups(); @@ -12,7 +36,7 @@ async function main () { return 0; } - console.log(`Found ${groups.length} groups: ${Object.keys(groups).join(", ")}`); + console.log(`Found ${Object.keys(groups)?.length} groups: ${Object.keys(groups).join(", ")}`); for (const groupName of Object.keys(groups)) { const projects = groups[groupName]; @@ -21,6 +45,11 @@ async function main () { const comparisons = await cmp.getGroup(groupName); + if (!comparisons || !comparisons.length) { + console.log(`No comparisons found for ${groupName}`); + continue; + } + // Check if there are any projects that have been modified since last comparison // or if there are any pairs that are no longer part of the group