nostrdb

an unfairly fast embedded nostr database backed by lmdb
git clone git://jb55.com/nostrdb
Log | Files | Refs | Submodules | README | LICENSE

commit 808f8c4c4d52552a13c02f8253ac543b53ac778f
parent aac9e1749b3a3f52251d4cd5ba88766c76beb4c1
Author: William Casarin <jb55@jb55.com>
Date:   Thu, 20 Mar 2025 14:34:50 -0700

ndb: add print-relay-kind-index-keys

for debugging

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Mndb.c | 8+++++++-
Msrc/nostrdb.c | 22++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/ndb.c b/ndb.c @@ -22,6 +22,7 @@ static int usage() printf(" print-search-keys\n"); printf(" print-kind-keys\n"); printf(" print-tag-keys\n"); + printf(" print-relay-kind-index-keys\n"); printf(" import <line-delimited json file>\n\n"); printf("settings\n\n"); printf(" --skip-verification skip signature validation\n"); @@ -98,6 +99,7 @@ static void print_stats(struct ndb_stat *stat) int ndb_print_search_keys(struct ndb_txn *txn); int ndb_print_kind_keys(struct ndb_txn *txn); int ndb_print_tag_index(struct ndb_txn *txn); +int ndb_print_relay_kind_index(struct ndb_txn *txn); static void print_note(struct ndb_note *note) { @@ -351,7 +353,11 @@ int main(int argc, char *argv[]) ndb_begin_query(ndb, &txn); ndb_print_tag_index(&txn); ndb_end_query(&txn); - } else if (argc == 3 && !strcmp(argv[1], "profile")) { + } else if (argc == 2 && !strcmp(argv[1], "print-relay-kind-index-keys")) { + ndb_begin_query(ndb, &txn); + ndb_print_relay_kind_index(&txn); + ndb_end_query(&txn); + } else if (argc == 3 && !strcmp(argv[1], "profile")) { pk_str = argv[2]; if (!hex_decode(pk_str, strlen(pk_str), tmp_id, sizeof(tmp_id))) { fprintf(stderr, "failed to decode hex pubkey '%s'\n", pk_str); diff --git a/src/nostrdb.c b/src/nostrdb.c @@ -7176,6 +7176,28 @@ void ndb_config_set_ingest_filter(struct ndb_config *config, config->filter_context = filter_ctx; } +int ndb_print_relay_kind_index(struct ndb_txn *txn) +{ + MDB_cursor *cur; + MDB_val k, v; + int i; + + if (mdb_cursor_open(txn->mdb_txn, txn->lmdb->dbs[NDB_DB_NOTE_RELAY_KIND], &cur)) + return 0; + + i = 1; + printf("relay\tkind\tcreated_at\tnote_id\n"); + while (mdb_cursor_get(cur, &k, &v, MDB_NEXT) == 0) { + printf("%s\t", (const char *)(k.mv_data + 25)); + printf("%" PRIu64 "\t", *(uint64_t*)(k.mv_data + 8)); + printf("%" PRIu64 "\t", *(uint64_t*)(k.mv_data + 16)); + printf("%" PRIu64 "\n", *(uint64_t*)(k.mv_data + 0)); + i++; + } + + return i; +} + int ndb_print_tag_index(struct ndb_txn *txn) { MDB_cursor *cur;