db/_archive/herodb_old/README.md
2025-06-27 12:11:04 +03:00

2.3 KiB

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 Product
  • insert_currency, get_currency, delete_currency, list_currencies for Currency
  • insert_sale, get_sale, delete_sale, list_sales for Sale

License

MIT