nostrdvm/tests/db.py
2025-02-01 19:35:39 +01:00

42 lines
1.1 KiB
Python

from threading import Thread
from nostr_sdk import Keys, Filter, ClientBuilder, NostrDatabase, SyncOptions, init_logger, LogLevel
init_logger(LogLevel.INFO)
keys = Keys.parse("nsec1ufnus6pju578ste3v90xd5m2decpuzpql2295m3sknqcjzyys9ls0qlc85")
print(keys.public_key().to_bech32())
async def reconcile_db():
# Create/open SQLite database
database = NostrDatabase.lmdb("nostr.db")
# NOT AVAILABLE ON WINDOWS AT THE MOMENT!
# Create/open nostrdb database
# database = NostrDatabase.ndb("ndb")
client = ClientBuilder().database(database).build()
await client.add_relay("wss://relay.damus.io")
await client.add_relay("wss://atl.purplerelay.com")
await client.connect()
# Negentropy reconciliation
f = Filter().author(keys.public_key())
opts = SyncOptions()
await client.sync(f, opts)
await do_some_work()
async def do_some_work():
database = NostrDatabase.lmdb("nostr.db")
f = Filter().author(keys.public_key()).limit(10)
events = await database.query(f)
for event in events.to_vec():
print(event.as_json())
nostr_dvm_thread = Thread(target=reconcile_db)
nostr_dvm_thread.start()