From f9d8b37b1aed15173b713c5b9ed5ab83f7ed312f Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 20 Mar 2019 12:30:13 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Reader/ServerStorage/ServerStorage.vue | 2 ++ server/controllers/ReaderController.js | 4 ++-- server/core/readerStorage.js | 10 +++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/client/components/Reader/ServerStorage/ServerStorage.vue b/client/components/Reader/ServerStorage/ServerStorage.vue index 98b49c9b..ad039dc1 100644 --- a/client/components/Reader/ServerStorage/ServerStorage.vue +++ b/client/components/Reader/ServerStorage/ServerStorage.vue @@ -205,6 +205,7 @@ class ServerStorage extends Vue { if (tries >= maxSetTries) { //отменять изменения не будем, просто предупредим //this.commit('reader/setSettings', this.oldSettings); + console.error(result); this.error('Не удалось отправить настройки на сервер. Данные не сохранены и могут быть перезаписаны.'); } else { this.oldSettings = _.cloneDeep(this.settings); @@ -279,6 +280,7 @@ class ServerStorage extends Vue { if (tries >= maxSetTries) { this.commit('reader/setProfiles', this.oldProfiles); this.checkCurrentProfile(); + console.error(result); this.error('Не удалось отправить данные на сервер. Изменения отменены.'); } else { this.oldProfiles = _.cloneDeep(this.profiles); diff --git a/server/controllers/ReaderController.js b/server/controllers/ReaderController.js index 25050aaf..7811dc94 100644 --- a/server/controllers/ReaderController.js +++ b/server/controllers/ReaderController.js @@ -39,8 +39,8 @@ class ReaderController extends BaseController { } catch (e) { error = e.message; } - //bad request - res.status(400).send({error}); + //error + res.status(500).send({error}); return false; } diff --git a/server/core/readerStorage.js b/server/core/readerStorage.js index 29f0cde6..adb88870 100644 --- a/server/core/readerStorage.js +++ b/server/core/readerStorage.js @@ -84,11 +84,19 @@ class ReaderStorage { } const dbh = await this.storagePool.get(); + await dbh.run('BEGIN'); try { + const newRev = {}; for (const id of Object.keys(items)) { await dbh.run(SQL`INSERT OR REPLACE INTO storage (id, rev, time, data) VALUES (${id}, ${items[id].rev}, strftime('%s','now'), ${items[id].data})`); - this.cache[id] = {rev: items[id].rev}; + newRev[id] = {rev: items[id].rev}; } + await dbh.run('COMMIT'); + + Object.assign(this.cache, newRev); + } catch (e) { + await dbh.run('ROLLBACK'); + throw e; } finally { dbh.ret(); }