// Runs once for all items. References upstream nodes by exact name. const sources = $('Set sources').first().json.sources; const runs = $('Get backup_runs (last 7d)').all().map(item => item.json); const weekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); const results = sources.map(source => { const sourceRuns = runs.filter(r => r.machine === source.machine && r.destination === source.destination && new Date(r.timestamp) >= weekAgo ); const hasSuccess = sourceRuns.some(r => r.status === 'success'); const hasAnyRun = sourceRuns.length > 0; const status = hasSuccess ? 'green' : hasAnyRun ? 'yellow' : 'red'; const lastSuccess = sourceRuns .filter(r => r.status === 'success') .sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp))[0] || null; return { ...source, status, runs: sourceRuns, lastSuccess }; }); const overallStatus = results.some(r => r.status === 'red') ? 'red' : results.some(r => r.status === 'yellow') ? 'yellow' : 'green'; return [{ json: { results, overallStatus } }];