浏览代码

Поправка формирования поисковой БД (из series удалена информация о книгах без серии)

Book Pauk 2 年之前
父节点
当前提交
85bf7296ef
共有 2 个文件被更改,包括 10 次插入3 次删除
  1. 1 1
      server/config/base.js
  2. 9 2
      server/core/DbCreator.js

+ 1 - 1
server/config/base.js

@@ -18,7 +18,7 @@ module.exports = {
 
     //поправить в случае, если были критические изменения в DbCreator или InpxParser
     //иначе будет рассинхронизация между сервером и клиентом на уровне БД
-    dbVersion: '10',
+    dbVersion: '11',
     dbCacheSize: 5,
 
     maxPayloadSize: 500,//in MB

+ 9 - 2
server/core/DbCreator.js

@@ -337,7 +337,7 @@ class DbCreator {
         //сохраним поисковые таблицы
         const chunkSize = 10000;
 
-        const saveTable = async(table, arr, nullArr, indexType = 'string') => {
+        const saveTable = async(table, arr, nullArr, indexType = 'string', delEmpty = false) => {
             
             if (indexType == 'string')
                 arr.sort((a, b) => a.value.localeCompare(b.value));
@@ -366,6 +366,13 @@ class DbCreator {
                 callback({progress: i/arr.length});                
             }
 
+            if (delEmpty) {
+                const delResult = await db.delete({table, where: `@@indexLR('value', '?', '?')`});
+                const statField = `${table}Count`;
+                if (stats[statField])
+                    stats[statField] -= delResult.deleted;
+            }
+
             nullArr();
             await db.close({table});
             utils.freeMemory();
@@ -378,7 +385,7 @@ class DbCreator {
 
         //series
         callback({job: 'series save', jobMessage: 'Сохранение индекса серий', jobStep: 4, progress: 0});
-        await saveTable('series', seriesArr, () => {seriesArr = null});
+        await saveTable('series', seriesArr, () => {seriesArr = null}, 'string', true);
 
         //title
         callback({job: 'title save', jobMessage: 'Сохранение индекса названий', jobStep: 5, progress: 0});