diff --git a/lib/www/server/lib/comparisons/geometric-differences.js b/lib/www/server/lib/comparisons/geometric-differences.js index 79b5ff3..4da165c 100644 --- a/lib/www/server/lib/comparisons/geometric-differences.js +++ b/lib/www/server/lib/comparisons/geometric-differences.js @@ -330,44 +330,80 @@ async function saveGroup (group, opts = {}) { async function getGroup (groupName, opts = {}) { - const group = (await groups())?.[groupName]?.map( i => i.pid)?.sort(); - - if (!group?.length || group?.length < 2) return; - const client = await pool.connect(); try { - const pairs = combinations(group, 2); - const flatValues = pairs.flat(); - const placeholders = []; - for (let i = 0; i < pairs.length; i++) { - placeholders.push(`($${i * 2 + 1}, $${i * 2 + 2})`); - } - const inClause = placeholders.join(','); - const selectFields = opts.returnData ? 'data, meta' : 'meta'; + if (groupName) { - const text = ` - SELECT baseline_pid, monitor_pid, ${selectFields} - FROM comparisons.comparisons - WHERE type = 'geometric_difference' - AND (baseline_pid, monitor_pid) IN (VALUES ${inClause}) - ORDER BY baseline_pid, monitor_pid - `; + const group = (await groups())?.[groupName]?.map( i => i.pid)?.sort(); - const res = await client.query(text, flatValues); - if (!res.rows.length) { - console.log("Comparison not found in database"); - return; - } + if (!group?.length || group?.length < 2) return; + + + const pairs = combinations(group, 2); + const flatValues = pairs.flat(); + const placeholders = []; + for (let i = 0; i < pairs.length; i++) { + placeholders.push(`($${i * 2 + 1}, $${i * 2 + 2})`); + } + const inClause = placeholders.join(','); + const selectFields = opts.returnData ? 'data, meta' : 'meta'; + + const text = ` + SELECT baseline_pid, monitor_pid, ${selectFields} + FROM comparisons.comparisons + WHERE type = 'geometric_difference' + AND (baseline_pid, monitor_pid) IN (VALUES ${inClause}) + ORDER BY baseline_pid, monitor_pid + `; + + if (!placeholders) { + console.log("No pairs found in group"); + return []; + } + + const res = await client.query(text, flatValues); + if (!res.rows.length) { + console.log("Comparison not found in database"); + return; + } + + if (opts.returnData) { + return res.rows.map( row => ({ + ...row, + data: DougalBinaryBundle.clone(row.data), + })); + } else { + return res.rows; + } - if (opts.returnData) { - return res.rows.map( row => ({ - ...row, - data: DougalBinaryBundle.clone(row.data), - })); } else { - return res.rows; + + const selectFields = opts.returnData ? 'data, meta' : 'meta'; + + const text = ` + SELECT baseline_pid, monitor_pid, ${selectFields} + FROM comparisons.comparisons + WHERE type = 'geometric_difference' + ORDER BY baseline_pid, monitor_pid + `; + + const res = await client.query(text); + if (!res.rows.length) { + console.log("Comparison not found in database"); + return; + } + + if (opts.returnData) { + return res.rows.map( row => ({ + ...row, + data: DougalBinaryBundle.clone(row.data), + })); + } else { + return res.rows; + } + } } catch (err) { console.error(err);