3 unstable releases
Uses new Rust 2024
| 0.2.0 | Dec 8, 2025 |
|---|---|
| 0.1.1 | Dec 8, 2025 |
| 0.1.0 | Dec 8, 2025 |
#917 in Database interfaces
37KB
711 lines
๐ฆ snm-fdbcli
A Modern Interactive CLI & Library for FoundationDB (Directory + Tuple Layer)
๐งฉ Built on the Official FoundationDB Rust Crate
This project is powered by the official FoundationDB Rust bindings:
foundationdb = { version = "0.10.0", features = ["embedded-fdb-include", "fdb-7_3"] }
snm-fdbcli is a powerful FoundationDB Directory/Tuple explorer, providing:
- โ๏ธ CLI commands (
dircreate,dirlist,pack,unpack,range,clearprefix) - โ๏ธ A REPL / interactive shell (
snm-fdbcli repl) - โ๏ธ High-level Rust APIs for directory management
- โ๏ธ Tuple pack/unpack helpers
- โ๏ธ Range queries, prefix queries, deletion
- โ๏ธ Dump entire subspaces
- โ๏ธ Works with any FoundationDB cluster (local or remote)
๐ Features
Directory Layer
- Create directories at any depth
- List subdirectories
- Open existing directories
Tuple Layer
- Pack
(a, 1, "demo")into FDB key - Unpack bytes back to tuple
- Automatic prefix-range generation
Data Operations
- Read range
- Query tuple ranges
- Delete prefix ranges
- Dump entire directories
๐ฅ Installation
Build the CLI
cargo install snm-fdbcli
๐ง Configuration
Export your cluster file path:
export SNM_FDBCLI_DB_PATH="/usr/local/etc/foundationdb/fdb.cluster"
If not set, Database::default() is used.
Interactive Shell
$ snm-fdbcli repl
snm-fdbcli> help
snm-fdbcli> dircreate srotas users
snm-fdbcli> dirlist
snm-fdbcli> dirlist srotas
snm-fdbcli> seed user-1
snm-fdbcli> show-user user-1
snm-fdbcli> show-wallet user-1
snm-fdbcli> logins user-1
snm-fdbcli> orders user-1
snm-fdbcli> pack (user-1, 1)
snm-fdbcli> unpack 0167757365722d31000000000000000100
snm-fdbcli> range srotas logins (user-1)
snm-fdbcli> clearprefix srotas logins (user-1)
snm-fdbcli> dump-all
snm-fdbcli> exit
๐ฅ๏ธ CLI Usage
snm-fdbcli init
snm-fdbcli seed --user user-1
snm-fdbcli show-user user-1
snm-fdbcli show-wallet user-1
snm-fdbcli show-logins user-1
snm-fdbcli show-orders user-1
snm-fdbcli dump-all
snm-fdbcli repl
๐ REPL MODE
Commands:
init
seed <user>
show-user <user>
show-wallet <user>
logins <user>
orders <user>
dump-all
dircreate <path>
dirlist <path>
pack (tuple)
unpack <hex>
range <dir> (tuple)
clearprefix <dir> (tuple)
help
exit
๐ Tuple Pack / Unpack
snm-fdbcli> pack (user-1, 1)
snm-fdbcli> unpack 01677573...
๐ Range Queries
snm-fdbcli> range srotas/logins (user-1)
snm-fdbcli> clearprefix srotas/logins (user-1)
๐งช Tests
Unit tests (no DB required)
cargo test
Full end-to-end (requires running FDB)
cargo test -- --ignored
๐ Library API Examples
let db = snm_fdbcli::connect_db()?;
let dir = snm_fdbcli::dir_create(&trx, &["srotas", "users"]).await?;
let key = snm_fdbcli::tuple_pack_from_string("(user-1,1)")?;
Made with โค๏ธ by the [Srotas Space] (https://srotas.space/open-source)
๐ฅ Contributors
- Snm Maurya - Creator & Lead Developer
LinkedIn
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
Dependencies
~5โ9MB
~158K SLoC