From 672c14fb67aa25b197b54f24747675a998d00a99 Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Wed, 4 May 2022 17:19:20 +0200 Subject: [PATCH] Add functions to accept/unaccept QCs. These are only able to deal with shot QCs. At this point, sequence-wide QCs cannot be marked as accepted. --- lib/www/server/lib/db/qc/results/accept.js | 23 ++++++++++++++++++++ lib/www/server/lib/db/qc/results/index.js | 4 +++- lib/www/server/lib/db/qc/results/unaccept.js | 22 +++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 lib/www/server/lib/db/qc/results/accept.js create mode 100644 lib/www/server/lib/db/qc/results/unaccept.js diff --git a/lib/www/server/lib/db/qc/results/accept.js b/lib/www/server/lib/db/qc/results/accept.js new file mode 100644 index 0000000..5c92c8d --- /dev/null +++ b/lib/www/server/lib/db/qc/results/accept.js @@ -0,0 +1,23 @@ +const { setSurvey } = require('../../connection'); + +async function accept (projectId, payload) { + const client = await setSurvey(projectId); + + const text = ` + UPDATE event_log_full + SET + labels = array_append(labels, 'QCAccepted') + WHERE + validity @> current_timestamp + AND id = ANY($1) + AND NOT ('QCAccepted' = ANY(labels)); + `; + + const values = [ payload ]; + + await client.query(text, values); + client.release(); + return; +} + +module.exports = accept; diff --git a/lib/www/server/lib/db/qc/results/index.js b/lib/www/server/lib/db/qc/results/index.js index ed59f33..183d88f 100644 --- a/lib/www/server/lib/db/qc/results/index.js +++ b/lib/www/server/lib/db/qc/results/index.js @@ -1,5 +1,7 @@ module.exports = { get: require('./get'), - delete: require('./delete') + delete: require('./delete'), + accept: require('./accept'), + unaccept: require('./unaccept') }; diff --git a/lib/www/server/lib/db/qc/results/unaccept.js b/lib/www/server/lib/db/qc/results/unaccept.js new file mode 100644 index 0000000..9c0d537 --- /dev/null +++ b/lib/www/server/lib/db/qc/results/unaccept.js @@ -0,0 +1,22 @@ +const { setSurvey, transaction } = require('../../connection'); + +async function unaccept (projectId, payload) { + const client = await setSurvey(projectId); + + const text = ` + UPDATE event_log_full + SET + labels = array_remove(labels, 'QCAccepted') + WHERE + validity @> current_timestamp + AND id = ANY($1); + `; + + const values = [ payload ]; + + await client.query(text, values); + client.release(); + return; +} + +module.exports = unaccept;