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:
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;