.. | ||
aiprompts | ||
examples | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
HeroDB
A database library built on top of sled with model support.
example
#test for mcc module
cargo run --bin dbexample_mcc
#test for governance module
cargo run --bin dbexample_gov
#test for products
cargo run --bin dbexample_prod
Features
- Type-safe database operations
- Builder pattern for model creation
- Transaction support
- Model-specific convenience methods
- Compression for efficient storage
Usage
Basic Usage
use herodb::db::{DB, DBBuilder};
use herodb::models::biz::{Product, ProductBuilder, ProductType, ProductStatus, Currency, CurrencyBuilder};
// Create a database instance
let db = DBBuilder::new("db")
.register_model::<Product>()
.register_model::<Currency>()
.build()
.expect("Failed to create database");
// Create a product using the builder pattern
let price = CurrencyBuilder::new()
.amount(29.99)
.currency_code("USD")
.build()
.expect("Failed to build currency");
let product = ProductBuilder::new()
.id(1)
.name("Premium Service")
.description("Our premium service offering")
.price(price)
.type_(ProductType::Service)
.category("Services")
.status(ProductStatus::Available)
.max_amount(100)
.validity_days(30)
.build()
.expect("Failed to build product");
// Insert the product using the generic method
db.set(&product).expect("Failed to insert product");
// Retrieve the product
let retrieved_product = db.get::<Product>(&"1".to_string()).expect("Failed to retrieve product");
Using Model-Specific Convenience Methods
The library provides model-specific convenience methods for common database operations:
// Insert a product using the model-specific method
db.insert_product(&product).expect("Failed to insert product");
// Retrieve a product by ID
let retrieved_product = db.get_product(1).expect("Failed to retrieve product");
// List all products
let all_products = db.list_products().expect("Failed to list products");
// Delete a product
db.delete_product(1).expect("Failed to delete product");
These methods are available for all registered models:
insert_product
,get_product
,delete_product
,list_products
for Productinsert_currency
,get_currency
,delete_currency
,list_currencies
for Currencyinsert_sale
,get_sale
,delete_sale
,list_sales
for Sale
License
MIT