From fb2eedd5ba62d9e31dea61d96737e27bcce62041 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Fri, 3 Dec 2021 14:07:32 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D1=80=D1=82=D0=B5=D1=80?= =?UTF-8?q?=20SQLITE=20->=20JambaDb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/db/Converter.js | 42 ++++++++++++++++++++++++++++++++++++++++++ server/index.js | 8 ++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 server/db/Converter.js diff --git a/server/db/Converter.js b/server/db/Converter.js new file mode 100644 index 00000000..5ab05c66 --- /dev/null +++ b/server/db/Converter.js @@ -0,0 +1,42 @@ +//TODO: удалить модуль в 2023г +const fs = require('fs-extra'); +const log = new (require('../core/AppLogger'))().log;//singleton + +class Converter { + async run(config) { + log('Converter start'); + + try { + const connManager = new (require('./ConnManager'))();//singleton + const storagePool = connManager.pool.readerStorage; + + const jembaConnManager = new (require('./JembaConnManager'))();//singleton + const db = jembaConnManager.db['reader-storage']; + + const srcDbPath = `${config.dataDir}/reader-storage.sqlite`; + if (!await fs.pathExists(srcDbPath)) { + log(LM_WARN, ' Source DB does not exist, nothing to do'); + return; + } + + const rows = await db.select({table: 'storage', count: true}); + if (rows.length && rows[0].count != 0) { + log(LM_WARN, ' Destination table already exists, nothing to do'); + return; + } + + const dbSrc = await storagePool.get(); + try { + const rows = await dbSrc.all(`SELECT * FROM storage`); + await db.insert({table: 'storage', rows}); + log(` Inserted ${rows.length} items`); + } finally { + dbSrc.ret(); + } + } finally { + log('Converter finish'); + } + } +} + +module.exports = Converter; \ No newline at end of file diff --git a/server/index.js b/server/index.js index 10729808..72577c11 100644 --- a/server/index.js +++ b/server/index.js @@ -49,6 +49,10 @@ async function init() { const jembaConnManager = new (require('./db/JembaConnManager'))();//singleton await jembaConnManager.init(config); + + //converter SQLITE => JembaDb + const converter = new (require('./db/Converter'))(); + await converter.run(config); } async function main() { @@ -110,9 +114,9 @@ async function main() { await main(); } catch (e) { if (log) - log(LM_FATAL, e); + log(LM_FATAL, e.stack); else - console.error(e); + console.error(e.stack); ayncExit.exit(1); } })();