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); } })();