commit 3993679cc03fcf3a09a177c55eb7782fd3c8bf1e
parent e302bf37fa5a6dff2d377e106c456f889f7eb10d
Author: William Casarin <jb55@jb55.com>
Date: Fri, 5 Jan 2024 21:45:59 -0800
nostrdb/query: support until for kind query plans
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/nostrdb/src/nostrdb.c b/nostrdb/src/nostrdb.c
@@ -2462,13 +2462,17 @@ static int ndb_query_plan_execute_kinds(struct ndb_txn *txn,
struct ndb_u64_tsid tsid, *ptsid;
struct ndb_filter_elements *kinds;
struct ndb_query_result res;
- uint64_t kind, note_id;
+ uint64_t kind, note_id, until, *pint;
int i, rc;
// we should have kinds in a kinds filter!
if (!(kinds = ndb_filter_get_elems(filter, NDB_FILTER_KINDS)))
return 0;
+ until = UINT64_MAX;
+ if ((pint = ndb_filter_get_int(filter, NDB_FILTER_UNTIL)))
+ until = *pint;
+
db = txn->lmdb->dbs[NDB_DB_NOTE_KIND];
if ((rc = mdb_cursor_open(txn->mdb_txn, db, &cur)))
@@ -2480,7 +2484,7 @@ static int ndb_query_plan_execute_kinds(struct ndb_txn *txn,
kind = kinds->elements[i].integer;
ndb_debug("kind %" PRIu64 "\n", kind);
- ndb_u64_tsid_init(&tsid, kind, UINT64_MAX);
+ ndb_u64_tsid_init(&tsid, kind, until);
k.mv_data = &tsid;
k.mv_size = sizeof(tsid);