...
This commit is contained in:
81
herodb/README.md
Normal file
81
herodb/README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# HeroDB
|
||||
|
||||
A database library built on top of sled with model support.
|
||||
|
||||
## 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::<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:
|
||||
|
||||
```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
|
Reference in New Issue
Block a user