Implement endpoint for QC deletion.

Closes #217.
This commit is contained in:
D. Berge
2022-05-04 15:53:10 +02:00
parent c8ef089b28
commit f4ee798bf0

View File

@@ -0,0 +1,69 @@
const { setSurvey, transaction } = require('../../connection');
async function del (projectId, sequenceId, opts = {}) {
const client = await setSurvey(projectId);
await transaction.begin(client);
if (sequenceId) {
const queries = [
`
UPDATE raw_lines
SET meta = meta - 'lastQCHash'
WHERE sequence = $1;
`,
`
DELETE
FROM event_log_full
WHERE
sequence = $1 AND meta ? 'qc_id';
`,
`
UPDATE info
SET value = value - 'hash'
WHERE key = 'qc'
-- Consume the parameter that we are passing
AND $1 = $1;
`
];
const values = [ sequenceId ];
for (const text of queries) {
await client.query(text, values);
}
} else {
const queries = [
`
UPDATE raw_lines
SET meta = meta - 'lastQCHash';
`,
`
DELETE
FROM event_log_full
WHERE
meta ? 'qc_id';
`,
`
UPDATE info
SET value = value - 'hash'
WHERE key = 'qc';
`
];
for (const text of queries) {
await client.query(text);
}
}
await transaction.commit(client);
client.release();
return;
}
module.exports = del;