From 6fbffdc7cc6b93f71924c6481daab6b6b064a027 Mon Sep 17 00:00:00 2001 From: megamaz Date: Tue, 31 Oct 2023 13:22:40 -0700 Subject: [PATCH] fixed query to change effective OR filtering to AND --- GitStats/src/package.json | 2 +- GitStats/src/renderer_stats.ts | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/GitStats/src/package.json b/GitStats/src/package.json index 41c4039..bfe6ba4 100644 --- a/GitStats/src/package.json +++ b/GitStats/src/package.json @@ -4,7 +4,7 @@ "description": "A Lightweight ElectronJS app to get statistics about a repository.", "keywords": [], "main": "./dist/app.js", - "version": "2.0.1", + "version": "2.0.2", "author": "megamaz", "scripts": { "start": "electron-forge start", diff --git a/GitStats/src/renderer_stats.ts b/GitStats/src/renderer_stats.ts index b01330b..eae6da7 100644 --- a/GitStats/src/renderer_stats.ts +++ b/GitStats/src/renderer_stats.ts @@ -49,6 +49,9 @@ async function CreateIssueGraph() { var has_label_filter = false; var has_assignee_filter = false; + var label_count = 0; + var assignee_count = 0; + // get label IDs var label_ids = []; if(label_filter.value != '') { @@ -57,6 +60,7 @@ async function CreateIssueGraph() { label_filter.value.split(",").forEach(label => { if(label != '') { filters.push(`_label='${label}'`); + label_count ++; } }); label_id_querry += " WHERE " + filters.join(" OR "); @@ -77,6 +81,7 @@ async function CreateIssueGraph() { assignee_filter.value.split(",").forEach(assignee => { if(assignee != '') { filters.push(`_name='${assignee}'`); + assignee_count ++; } }); assignee_id_querry += " WHERE " + filters.join(" OR "); @@ -102,7 +107,19 @@ async function CreateIssueGraph() { if(has_assignee_filter) { sql_querry += " INNER JOIN assigneelink ON issuelist._number=assigneelink._number"; } - sql_querry += " WHERE " + all_filters.join(" AND "); + sql_querry += " WHERE " + all_filters.join(" AND ") + ` GROUP BY issuelist._number`; + // thanks ChatGPT + if(label_count != 0 || assignee_count != 0) { + sql_querry += " HAVING " + if(label_count != 0) { + sql_querry += `COUNT(DISTINCT labellink._id) = ${label_count}` + } + if(label_count != 0 && assignee_count != 0) + sql_querry += " AND " + if(assignee_count != 0) { + sql_querry += `COUNT(DISTINCT assigneelink._id) = ${assignee_count}` + } + } } sql_querry += " ORDER BY _dateopen";