From e0791c1939ab6aeab78bec78c7cdb4b91eaabe53 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Mon, 11 Apr 2022 14:19:16 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Added=20a=20search=20filter=20fo?= =?UTF-8?q?r=20volumes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/search.service.ts | 66 ++++++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/services/search.service.ts b/services/search.service.ts index 2375cb9..92cf50a 100644 --- a/services/search.service.ts +++ b/services/search.service.ts @@ -71,29 +71,56 @@ export default class SettingsService extends Service { size: number; from: number; }; + type: string; }> ) => { try { console.log(ctx.params); const { query, pagination } = ctx.params; let eSQuery = {}; - if (isEmpty(query)) { - Object.assign(eSQuery, { - match_all: {}, - }); - } else { - Object.assign(eSQuery, { - multi_match: { - fields: [ - "rawFileDetails.name", - "sourcedMetadata.comicvine.name", - "sourcedMetadata.comicvine.volumeInformation.name", - ], - query: query.volumeName, - }, - }); + switch (ctx.params.type) { + case "all": + Object.assign(eSQuery, { + match_all: {}, + }); + break; + + case "volumeName": + Object.assign(eSQuery, { + multi_match: { + fields: [ + "rawFileDetails.name", + "sourcedMetadata.comicvine.name", + "sourcedMetadata.comicvine.volumeInformation.name", + ], + query: query.volumeName, + }, + }); + break; + case "wanted": + Object.assign(eSQuery, { + bool: { + must: { + term: { + "acquisition.wanted": + true, + }, + }, + }, + }); + break; + case "volumes": + Object.assign(eSQuery, { + exists: { + field: "sourcedMetadata.comicvine.volumeInformation" + } + }); + break; } - console.log(query); + console.log("Searching ElasticSearch index with this query -> "); + console.log( + JSON.stringify(eSQuery, null, 2) + ); const result = await eSClient.search( { index: "comics", @@ -107,7 +134,12 @@ export default class SettingsService extends Service { return result; } catch (error) { - return new Errors.MoleculerClientError("Failed to return data", 404, "ElasticSearch error", error); + return new Errors.MoleculerClientError( + "Failed to return data", + 404, + "ElasticSearch error", + error + ); } }, },