diff --git a/lib/www/server/lib/db/info/delete.js b/lib/www/server/lib/db/info/delete.js index e69de29..38139b4 100644 --- a/lib/www/server/lib/db/info/delete.js +++ b/lib/www/server/lib/db/info/delete.js @@ -0,0 +1,28 @@ +const { setSurvey, transaction } = require('../connection'); + +async function del (projectId, path, opts = {}) { + const client = await setSurvey(projectId); + const [key, ...jsonpath] = (path||"").split("/").filter(i => i.length); + + try { + const text = jsonpath.length + ? ` + UPDATE info + SET value = value #- $2 + WHERE key = $1; + ` + : ` + DELETE FROM info + WHERE key = $1; + `; + const values = jsonpath.length ? [key, jsonpath] : [key]; + await client.query(text, values); + } catch (err) { + console.error("ERROR", err); + throw err; + } finally { + client.release(); + } +} + +module.exports = del;