From c5680150e63afa654b42588cff24bf29bdc9f58b Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 5 Feb 2025 22:56:02 -0600 Subject: [PATCH] Copy the code into getIdsBySearch >:( --- src/utils/search.ts | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/utils/search.ts b/src/utils/search.ts index 17a625bd..f44e00c8 100644 --- a/src/utils/search.ts +++ b/src/utils/search.ts @@ -79,14 +79,27 @@ export async function getIdsBySearch( } } - for (const [key, values] of Object.entries(ext)) { - if (key === 'domain') continue; + for (let [key, values] of Object.entries(ext)) { + if (key === 'domain' || key === '-domain') continue; - query = query.where((eb) => - eb.or( - values.map((value) => eb('nostr_events.search_ext', '@>', { [key]: value })), - ) - ); + let negated = false; + + if (key.startsWith('-')) { + key = key.slice(1); + negated = true; + } + + query = query.where((eb) => { + if (negated) { + return eb.and( + values.map((value) => eb.not(eb('nostr_events.search_ext', '@>', { [key]: value }))), + ); + } else { + return eb.or( + values.map((value) => eb('nostr_events.search_ext', '@>', { [key]: value })), + ); + } + }); } if (domains.size) {