Seperate dbs

This commit is contained in:
mrfry 2020-11-26 09:16:12 +01:00
parent 728931d56e
commit 4e34267d44
9 changed files with 149 additions and 82 deletions

View file

@ -7,11 +7,15 @@ import {
Subject,
} from '../types/basicTypes'
// TODO
interface SearchResultQuestion extends Question {
match: number
}
export interface SearchResult {
result: Array<SearchResultQuestion>
dbName: string
}
const searchDataWorkerFile = './src/utils/classes.ts'
const assert = (val) => {
@ -217,7 +221,10 @@ function createQuestion(
}
function compareImage(data: QuestionData, data2: QuestionData) {
return compareString(data.images.join(' '), data2.images.join(' '))
// TODO: img comparing (hashed images vs images)
const imgs1 = data.hashedImages ? data.hashedImages : data.images
const imgs2 = data2.hashedImages ? data2.hashedImages : data2.images
return compareString(imgs1.join(' '), imgs2.join(' '))
}
function compareData(q1: Question, q2: Question) {
@ -412,23 +419,22 @@ function searchDatas(
question: any,
subjName: string,
questionData?: QuestionData
): Promise<Array<Array<SearchResultQuestion>>> {
): Promise<Array<SearchResult>> {
return Promise.all(
data.map((db) => {
return searchData(db.data, question, subjName, questionData)
data.map((db: QuestionDb) => {
return searchData(db, question, subjName, questionData)
})
)
}
// TODO: remove questionData, make question only Question type
// FIXME: remove questionData, make question only Question type
function searchData(
data: Array<Subject>,
qdb: QuestionDb,
question: any,
subjName: string,
questionData?: QuestionData
): Promise<Array<SearchResultQuestion>> {
): Promise<SearchResult> {
return new Promise((resolve, reject) => {
assert(data)
assert(question)
logger.DebugLog('Searching for question', 'qdb search', 1)
logger.DebugLog('Question:', 'qdb search', 2)
@ -447,7 +453,7 @@ function searchData(
question = simplifyQuestion(question)
const worker = workerTs(searchDataWorkerFile, {
workerData: { data, subjName, question, questionData },
workerData: { data: qdb.data, subjName, question, questionData },
})
worker.on('error', (err) => {
@ -478,7 +484,10 @@ function searchData(
'qdb search',
1
)
resolve(result)
resolve({
result: result,
dbName: qdb.name,
})
})
})
}
@ -494,10 +503,10 @@ function dataToString(data: Array<Subject>): string {
// ------------------------------------------------------------------------
function searchWorker(
data: any,
subjName: any,
question: any,
questionData: any
data: Array<Subject>,
subjName: string,
question: Question,
questionData?: QuestionData
): any {
let result = []