From 08fb92d599ef602e702ad193c95f18004284605f Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 2 Apr 2024 18:32:36 +0800 Subject: [PATCH] fix: site filter in rules matching both site name and url --- packages/api/src/services/library_item.ts | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 9290b8ece..091db0714 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -1503,21 +1503,21 @@ export const filterItemEvents = ( return event[key]?.toString()?.toLowerCase() === lowercasedValue } // match filters + case 'note': + throw new RequiresSearchQueryError() case 'author': case 'title': - case 'description': - case 'note': - case 'site': { - const columnName = getColumnName(field.name) - const key = camelCase(columnName) as - | 'author' - | 'title' - | 'description' - | 'note' - | 'siteName' + case 'description': { + const key = field.name as 'author' | 'title' | 'description' - // TODO: Implement full text search - return event[key]?.toString()?.match(new RegExp(lowercasedValue, 'i')) + return event[key]?.toString()?.toLowerCase().includes(lowercasedValue) + } + case 'site': { + const keys = ['siteName', 'originalUrl'] as const + + return keys.some((key) => { + return event[key]?.toString()?.toLowerCase().includes(lowercasedValue) + }) } case 'includes': { const ids = lowercasedValue.split(',') @@ -1579,7 +1579,7 @@ export const filterItemEvents = ( } } default: - return false + throw new Error(`Unexpected field: ${field.name}`) } }