# HeroDB A database library built on top of sled with model support. ## example ```bash #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 ```rust 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::() .register_model::() .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::(&"1".to_string()).expect("Failed to retrieve product"); ``` ### Using Model-Specific Convenience Methods The library provides model-specific convenience methods for common database operations: ```rust // 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 Product - `insert_currency`, `get_currency`, `delete_currency`, `list_currencies` for Currency - `insert_sale`, `get_sale`, `delete_sale`, `list_sales` for Sale ## License MIT