snm-fdbcli

Crates.iosnm-fdbcli
lib.rssnm-fdbcli
version0.2.0
created_at2025-12-08 12:09:22.502657+00
updated_at2025-12-08 12:34:37.380614+00
descriptionA lightweight FoundationDB CLI and helper library for creating spaces, tuple subspaces, and running structured FDB queries. Designed for development.
homepagehttps://github.com/srotas-space/snm-fdbcli
repositoryhttps://github.com/srotas-space/snm-fdbcli
max_upload_size
id1973416
size63,687
Srotas Space (xsmmaurya)

documentation

https://github.com/srotas-space/snm-fdbcli

README

๐Ÿ“ฆ snm-fdbcli

A Modern Interactive CLI & Library for FoundationDB (Directory + Tuple Layer)

Crates.io Documentation License Downloads Recent Downloads

SnmFDBCLI

๐Ÿงฉ 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

GitHub stars


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Commit count: 0

cargo fmt