From 654e7c601ed8e923ee6b470dff7c299f39f33c03 Mon Sep 17 00:00:00 2001 From: Nikola Ubavic <53820106+ubavic@users.noreply.github.com> Date: Thu, 25 Nov 2021 23:53:49 +0100 Subject: [PATCH] fix: machine unpair feat: add removed_devices table --- lib/pairing.js | 14 +++++++++++- ...637877732001-add_unpaired_devices_table.js | 22 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 migrations/1637877732001-add_unpaired_devices_table.js diff --git a/lib/pairing.js b/lib/pairing.js index 7cdf4a99..7c0e3cef 100644 --- a/lib/pairing.js +++ b/lib/pairing.js @@ -4,6 +4,7 @@ const readFile = pify(fs.readFile) const db = require('./db') const options = require('./options') const logger = require('./logger') +const uuid = require('uuid') // A machine on an older version (no multicassette code) could be paired with a server with multicassette code. // This makes sure that the server stores a default value @@ -17,13 +18,24 @@ function pullToken (token) { } function unpair (deviceId) { + const backupSQL = `INSERT INTO + unpaired_devices(id, device_id, name, model, paired, unpaired) + VALUES ( + $1, + $2, + (SELECT name FROM devices WHERE device_id=$2), + (SELECT model FROM devices WHERE device_id=$2), + (SELECT created FROM devices WHERE device_id=$2), + now() + )` + // TODO new-admin: We should remove all configs related to that device. This can get tricky. return db.tx(t => { const q1 = t.none('DELETE FROM devices WHERE device_id=$1', [deviceId]) const q2 = t.none('DELETE FROM machine_pings WHERE device_id=$1', [deviceId]) const q3 = t.none('DELETE FROM machine_network_heartbeat WHERE device_id=$1', [deviceId]) const q4 = t.none('DELETE FROM machine_network_performance WHERE device_id=$1', [deviceId]) - return Promise.all([q1, q2, q3, q4]) + return t.manyOrNone(backupSQL, [uuid.v4(), deviceId]).then(() => Promise.all([q1, q2, q3, q4])) }) } diff --git a/migrations/1637877732001-add_unpaired_devices_table.js b/migrations/1637877732001-add_unpaired_devices_table.js new file mode 100644 index 00000000..8bdbdab5 --- /dev/null +++ b/migrations/1637877732001-add_unpaired_devices_table.js @@ -0,0 +1,22 @@ +var db = require('./db') + +exports.up = function (next) { + var sql = [ + `ALTER TABLE cashbox_batches + DROP CONSTRAINT cashbox_batches_device_id_fkey;`, + `CREATE TABLE IF NOT EXISTS unpaired_devices ( + id uuid PRIMARY KEY, + device_id text NOT NULL, + model text, + name text, + paired timestamp NOT NULL, + unpaired timestamp NOT NULL + )`, + ] + + db.multi(sql, next) +} + +exports.down = function (next) { + next() +} \ No newline at end of file