From 7f224cc1e1c0733168b3dd06d46d72c2b77d37ef Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 18 Mar 2024 22:29:46 +0800 Subject: [PATCH] running text search on all text fields --- packages/api/src/services/library_item.ts | 28 +++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 2a0b2de68..8cc80bd6a 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -1322,11 +1322,7 @@ export const filterItemEvents = ( throw new Error(`Unexpected keyword: ${value}`) } - const key = matchingKeyword as - | 'highlightAnnotations' - | 'labelNames' - | 'subscription' - const eventValue = event[key] as string | string[] + const eventValue = event[matchingKeyword as keyof ItemEvent] return !eventValue || (Array.isArray(eventValue) && eventValue.length === 0) } @@ -1350,10 +1346,21 @@ export const filterItemEvents = ( return true } + const textFields = [ + 'author', + 'title', + 'description', + 'note', + 'siteName', + 'readableContent', + 'originalUrl', + ] + const text = textFields + .map((field) => event[field as keyof ItemEvent]) + .join(' ') + // TODO: Implement full text search - return event.readableContent - ?.toString() - ?.match(new RegExp(lowercasedValue, 'i')) + return text.match(new RegExp(lowercasedValue, 'i')) } if (!lowercasedValue) { @@ -1461,10 +1468,7 @@ export const filterItemEvents = ( const start = startDate ?? new Date(0) const end = endDate ?? new Date() - const key = `${field.name.toLowerCase()}At` as - | 'readAt' - | 'updatedAt' - | 'publishedAt' + const key = `${field.name.toLowerCase()}At` as keyof ItemEvent const eventValue = event[key] as Date return eventValue >= start && eventValue <= end