Добавлен подсчет статистики, сортировка серий и названий
This commit is contained in:
@@ -52,7 +52,8 @@ const stepBound = [
|
|||||||
79,// jobStep = 9
|
79,// jobStep = 9
|
||||||
79,// jobStep = 10
|
79,// jobStep = 10
|
||||||
80,// jobStep = 11
|
80,// jobStep = 11
|
||||||
100,// jobStep = 12
|
95,// jobStep = 12
|
||||||
|
100,// jobStep = 13
|
||||||
];
|
];
|
||||||
|
|
||||||
const componentOptions = {
|
const componentOptions = {
|
||||||
|
|||||||
@@ -60,14 +60,11 @@ class DbCreator {
|
|||||||
let langArr = [];
|
let langArr = [];
|
||||||
|
|
||||||
//stats
|
//stats
|
||||||
let filesCount = 0;
|
|
||||||
let authorCount = 0;
|
let authorCount = 0;
|
||||||
let bookCount = 0;
|
let bookCount = 0;
|
||||||
let noAuthorBookCount = 0;
|
let noAuthorBookCount = 0;
|
||||||
let bookDelCount = 0;
|
let bookDelCount = 0;
|
||||||
|
|
||||||
let filesSet = new Set();
|
|
||||||
|
|
||||||
//stuff
|
//stuff
|
||||||
let recsLoaded = 0;
|
let recsLoaded = 0;
|
||||||
callback({recsLoaded});
|
callback({recsLoaded});
|
||||||
@@ -148,8 +145,6 @@ class DbCreator {
|
|||||||
|
|
||||||
rec.id = ++id;
|
rec.id = ++id;
|
||||||
|
|
||||||
filesSet.add(`${rec.folder}/${rec.file}.${rec.ext}`);
|
|
||||||
|
|
||||||
if (!rec.del) {
|
if (!rec.del) {
|
||||||
bookCount++;
|
bookCount++;
|
||||||
if (!rec.author)
|
if (!rec.author)
|
||||||
@@ -214,9 +209,6 @@ class DbCreator {
|
|||||||
const parser = new InpxParser();
|
const parser = new InpxParser();
|
||||||
await parser.parse(config.inpxFile, readFileCallback, parsedCallback);
|
await parser.parse(config.inpxFile, readFileCallback, parsedCallback);
|
||||||
|
|
||||||
filesCount = filesSet.size;
|
|
||||||
filesSet = null;
|
|
||||||
|
|
||||||
utils.freeMemory();
|
utils.freeMemory();
|
||||||
|
|
||||||
//отсортируем авторов и выдадим им правильные id
|
//отсортируем авторов и выдадим им правильные id
|
||||||
@@ -448,14 +440,35 @@ class DbCreator {
|
|||||||
|
|
||||||
utils.freeMemory();
|
utils.freeMemory();
|
||||||
|
|
||||||
|
//сортировка серий
|
||||||
|
callback({job: 'series sort', jobMessage: 'Сортировка серий', jobStep: 5, progress: 0});
|
||||||
|
await utils.sleep(100);
|
||||||
|
seriesArr.sort((a, b) => a.value.localeCompare(b.value));
|
||||||
|
await utils.sleep(100);
|
||||||
|
callback({progress: 0.3});
|
||||||
|
id = 0;
|
||||||
|
for (const seriesRec of seriesArr) {
|
||||||
|
seriesRec.id = ++id;
|
||||||
|
}
|
||||||
|
|
||||||
|
await utils.sleep(100);
|
||||||
|
callback({progress: 0.5});
|
||||||
|
//заодно и названия
|
||||||
|
titleArr.sort((a, b) => a.value.localeCompare(b.value));
|
||||||
|
await utils.sleep(100);
|
||||||
|
callback({progress: 0.7});
|
||||||
|
id = 0;
|
||||||
|
for (const titleRec of titleArr) {
|
||||||
|
titleRec.id = ++id;
|
||||||
|
}
|
||||||
|
|
||||||
//config
|
//config
|
||||||
callback({job: 'config save', jobMessage: 'Сохранение конфигурации', jobStep: 5, progress: 0});
|
|
||||||
await db.create({
|
await db.create({
|
||||||
table: 'config'
|
table: 'config'
|
||||||
});
|
});
|
||||||
|
|
||||||
const stats = {
|
const stats = {
|
||||||
filesCount,
|
filesCount: 0,
|
||||||
recsLoaded,
|
recsLoaded,
|
||||||
authorCount,
|
authorCount,
|
||||||
authorCountAll: authorArr.length,
|
authorCountAll: authorArr.length,
|
||||||
@@ -625,10 +638,47 @@ class DbCreator {
|
|||||||
aChunk = null;
|
aChunk = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//статистика по количеству файлов
|
||||||
|
callback({job: 'files count', jobMessage: 'Подсчет статистики', jobStep: 12, progress: 0});
|
||||||
|
|
||||||
|
//эмуляция прогресса
|
||||||
|
let countDone = false;
|
||||||
|
(async() => {
|
||||||
|
let i = 0;
|
||||||
|
while (!countDone) {
|
||||||
|
callback({progress: i/100});
|
||||||
|
i = (i < 100 ? i + 5 : 100);
|
||||||
|
await utils.sleep(1000);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
//подчсет
|
||||||
|
const countRes = await db.select({table: 'book', count: true, where: `
|
||||||
|
const filesSet = new Set();
|
||||||
|
|
||||||
|
@@iter(@all(), (r) => {
|
||||||
|
const file = ${"`${r.folder}/${r.file}.${r.ext}`"};
|
||||||
|
if (filesSet.has(file)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
filesSet.add(file);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
`});
|
||||||
|
|
||||||
|
if (countRes.length) {
|
||||||
|
stats.filesCount = countRes[0].count;
|
||||||
|
await db.insert({table: 'config', replace: true, rows: [
|
||||||
|
{id: 'stats', value: stats},
|
||||||
|
]});
|
||||||
|
}
|
||||||
|
countDone = true;
|
||||||
|
|
||||||
//чистка памяти, ибо жрет как не в себя
|
//чистка памяти, ибо жрет как не в себя
|
||||||
await db.drop({table: 'book'});//таблица больше не понадобится
|
|
||||||
await db.drop({table: 'series_temporary'});//таблица больше не понадобится
|
await db.drop({table: 'series_temporary'});//таблица больше не понадобится
|
||||||
|
|
||||||
|
await db.close({table: 'book'});
|
||||||
await db.close({table: 'series'});
|
await db.close({table: 'series'});
|
||||||
await db.freeMemory();
|
await db.freeMemory();
|
||||||
utils.freeMemory();
|
utils.freeMemory();
|
||||||
|
|||||||
Reference in New Issue
Block a user