Добавлен конвертер SQLITE -> JambaDb
This commit is contained in:
42
server/db/Converter.js
Normal file
42
server/db/Converter.js
Normal file
@@ -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;
|
||||||
@@ -49,6 +49,10 @@ async function init() {
|
|||||||
|
|
||||||
const jembaConnManager = new (require('./db/JembaConnManager'))();//singleton
|
const jembaConnManager = new (require('./db/JembaConnManager'))();//singleton
|
||||||
await jembaConnManager.init(config);
|
await jembaConnManager.init(config);
|
||||||
|
|
||||||
|
//converter SQLITE => JembaDb
|
||||||
|
const converter = new (require('./db/Converter'))();
|
||||||
|
await converter.run(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
@@ -110,9 +114,9 @@ async function main() {
|
|||||||
await main();
|
await main();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (log)
|
if (log)
|
||||||
log(LM_FATAL, e);
|
log(LM_FATAL, e.stack);
|
||||||
else
|
else
|
||||||
console.error(e);
|
console.error(e.stack);
|
||||||
ayncExit.exit(1);
|
ayncExit.exit(1);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user