feat(Stores): Create first version of key-value storage.
This MR introduces a key-value storage backend to nostrify. Closes #1 (closed) when merged.
Done:
- Querying by tags, kind, author, timestamp, limiting (FTS is out of scope at the moment)
- Event insertion with replacements and kind 5s
- Genericize for any k-v database - the implementation is based on Deno's built in KV store. That gives us Deno KV's hosted FoundationDB for free, as well as the SQLite-backed local version, and the self-hostable SQLite Deno KV implementation. Adapters can be written by implementing
Deno.Kv
for any TypeScript class and passing an instance of that class into NDenoKvDatabase.
To do:
- Error handling, robust-ification, polish
Edited by Siddharth Singh