From 14adeb7c8d4ea082b99d053f44faa2915c1d25b9 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Fri, 19 Aug 2022 21:08:59 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=B1=D0=B0=D0=B7=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/DbCreator.js | 66 +++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/server/core/DbCreator.js b/server/core/DbCreator.js index 86a8f37..51a3c8a 100644 --- a/server/core/DbCreator.js +++ b/server/core/DbCreator.js @@ -1,6 +1,8 @@ const InpxParser = require('./InpxParser'); const utils = require('./utils'); +const emptyFieldValue = '@'; + class DbCreator { constructor(config) { this.config = config; @@ -44,7 +46,7 @@ class DbCreator { const splitAuthor = (author) => { if (!author) { - author = 'Автор не указан'; + author = emptyFieldValue; } const result = author.split(','); @@ -89,7 +91,7 @@ class DbCreator { //это нужно для того, чтобы имя автора начиналось с заглавной if (a[0].toUpperCase() === a[0]) authorRec.author = a; - + //ссылки на книги authorRec.bookId.push(id); } @@ -127,22 +129,23 @@ class DbCreator { //теперь можно создавать остальные поисковые таблицы const parseField = (fieldValue, fieldMap, fieldArr, authorIds) => { - if (fieldValue) { - const value = fieldValue.toLowerCase(); + if (!fieldValue) + fieldValue = emptyFieldValue; - let fieldRec; - if (fieldMap.has(value)) { - const fieldId = fieldMap.get(value); - fieldRec = fieldArr[fieldId]; - } else { - fieldRec = {id: fieldArr.length, value, authorId: new Set()}; - fieldArr.push(fieldRec); - fieldMap.set(value, fieldRec.id); - } + const value = fieldValue.toLowerCase(); - for (const id of authorIds) { - fieldRec.authorId.add(id); - } + let fieldRec; + if (fieldMap.has(value)) { + const fieldId = fieldMap.get(value); + fieldRec = fieldArr[fieldId]; + } else { + fieldRec = {id: fieldArr.length, value, authorId: new Set()}; + fieldArr.push(fieldRec); + fieldMap.set(value, fieldRec.id); + } + + for (const id of authorIds) { + fieldRec.authorId.add(id); } }; @@ -165,23 +168,24 @@ class DbCreator { parseField(rec.title, titleMap, titleArr, authorIds); //жанры - if (rec.genre) { - const genre = rec.genre.split(','); + if (!rec.genre) + rec.genre = emptyFieldValue; - for (const g of genre) { - let genreRec; - if (genreMap.has(g)) { - const genreId = genreMap.get(g); - genreRec = genreArr[genreId]; - } else { - genreRec = {id: genreArr.length, value: g, authorId: new Set()}; - genreArr.push(genreRec); - genreMap.set(g, genreRec.id); - } + const genre = rec.genre.split(','); - for (const id of authorIds) { - genreRec.authorId.add(id); - } + for (const g of genre) { + let genreRec; + if (genreMap.has(g)) { + const genreId = genreMap.get(g); + genreRec = genreArr[genreId]; + } else { + genreRec = {id: genreArr.length, value: g, authorId: new Set()}; + genreArr.push(genreRec); + genreMap.set(g, genreRec.id); + } + + for (const id of authorIds) { + genreRec.authorId.add(id); } }