From 38f63232a3bf06f43d483e38355087756949de0c Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 17 Aug 2022 17:53:47 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20WebWorker=20=D0=B8=20DbCreator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/InpxParser.js | 19 ++++++++++--------- server/core/WebWorker.js | 15 ++++++--------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/server/core/InpxParser.js b/server/core/InpxParser.js index dda8ee8..7f968e9 100644 --- a/server/core/InpxParser.js +++ b/server/core/InpxParser.js @@ -67,12 +67,18 @@ class InpxParser { const structure = inpxStructure.split(';'); //парсим inp-файлы + this.chunk = []; for (const inpFile of inpFiles) { await readFileCallback({fileName: inpFile, current: ++current}); const buf = await zipReader.extractToBuf(inpFile); await this.parseInp(buf, structure, parsedCallback); } + + if (this.chunk.length) { + await parsedCallback(this.chunk); + } + } finally { zipReader.close(); } @@ -82,7 +88,6 @@ class InpxParser { const structLen = structure.length; const rows = inpBuf.toString().split('\n'); - let chunk = []; for (const row of rows) { let line = row; if (!line) @@ -117,17 +122,13 @@ class InpxParser { rec.librate = parseInt(rec.librate, 10) || 0; //пушим - chunk.push(rec); + this.chunk.push(rec); - if (chunk.length >= 10000) { - await parsedCallback(chunk); - chunk = []; + if (this.chunk.length >= 10000) { + await parsedCallback(this.chunk); + this.chunk = []; } } - - if (chunk.length) { - await parsedCallback(chunk); - } } get info() { diff --git a/server/core/WebWorker.js b/server/core/WebWorker.js index 4d69c74..102172b 100644 --- a/server/core/WebWorker.js +++ b/server/core/WebWorker.js @@ -63,7 +63,7 @@ class WebWorker { async createDb(dbPath) { this.setMyState(ssDbCreating); - log('Creating search DB'); + log('Searcher DB create start'); const config = this.config; @@ -85,14 +85,11 @@ class WebWorker { log(' start INPX import'); const dbCreator = new DbCreator(config); - let fileName = ''; await dbCreator.run(db, (state) => { this.setMyState(ssDbCreating, state); - if (state.fileName && state.fileName !== fileName) { - fileName = state.fileName; - log(` load ${fileName}`); - } + if (state.fileName) + log(` load ${state.fileName}`); if (state.recsLoaded) log(` processed ${state.recsLoaded} records`); }); @@ -100,7 +97,7 @@ class WebWorker { log(' finish INPX import'); } finally { await db.unlock(); - log('Search DB created'); + log('Searcher DB successfully created'); } } @@ -121,7 +118,7 @@ class WebWorker { //загружаем БД this.setMyState(ssDbLoading); - log('Open search DB'); + log('Searcher DB open'); this.db = new JembaDbThread(); await this.db.lock({ @@ -136,7 +133,7 @@ class WebWorker { //открываем все таблицы await this.db.openAll(); - log('Search DB ready'); + log('Searcher DB is ready'); } catch (e) { log(LM_FATAL, e.message); ayncExit.exit(1);