Работа над расширенным поиском

This commit is contained in:
Book Pauk
2022-12-06 19:03:49 +07:00
parent 51b325d63c
commit 5faa6a1e8f
5 changed files with 37 additions and 1 deletions

View File

@@ -235,6 +235,10 @@ class Api {
return await this.request({action: 'search', from, query}, 30);
}
async bookSearch(query) {
return await this.request({action: 'bookSearch', query}, 30);
}
async getAuthorBookList(authorId) {
return await this.request({action: 'get-author-book-list', authorId});
}

View File

@@ -256,6 +256,7 @@ const route2component = {
'author': {component: 'AuthorList', label: 'Авторы'},
'series': {component: 'SeriesList', label: 'Серии'},
'title': {component: 'TitleList', label: 'Книги'},
'extended': {component: 'TitleList', label: 'Расширенный поиск'},
};
const componentOptions = {
@@ -529,7 +530,13 @@ class Search {
get listOptions() {
const result = [];
for (const [route, rec] of Object.entries(route2component))
result.push({label: rec.label, value: route});
if (route == 'extended') {
if (this.config.extendedSearch) {
result.push({value: route, icon: 'la la-code', size: '10px'});
}
} else {
result.push({label: rec.label, value: route, icon: rec.icon});
}
return result;
}

View File

@@ -8,6 +8,7 @@ const myRoutes = [
['/author', Search],
['/series', Search],
['/title', Search],
['/extended', Search],
['/:pathMatch(.*)*', null, null, '/'],
];

View File

@@ -87,6 +87,8 @@ class WebSocketController {
await this.getWorkerState(req, ws); break;
case 'search':
await this.search(req, ws); break;
case 'bookSearch':
await this.bookSearch(req, ws); break;
case 'get-author-book-list':
await this.getAuthorBookList(req, ws); break;
case 'get-author-series-list':
@@ -165,6 +167,17 @@ class WebSocketController {
this.send(result, req, ws);
}
async bookSearch(req, ws) {
if (!this.config.extendedSearch)
throw new Error('config.extendedSearch disabled');
if (!req.query)
throw new Error(`query is empty`);
const result = await this.webWorker.bookSearch(req.query);
this.send(result, req, ws);
}
async getAuthorBookList(req, ws) {
const result = await this.webWorker.getAuthorBookList(req.authorId);

View File

@@ -268,6 +268,17 @@ class WebWorker {
return result;
}
async bookSearch(query) {
this.checkMyState();
const result = await this.dbSearcher.bookSearch(query);
const config = await this.dbConfig();
result.inpxHash = (config.inpxHash ? config.inpxHash : '');
return result;
}
async opdsQuery(from, query) {
this.checkMyState();