diff --git a/herodb/examples/circle_models_demo.rs b/herodb/examples/circle_models_demo.rs index d634d8a..ae016f5 100644 --- a/herodb/examples/circle_models_demo.rs +++ b/herodb/examples/circle_models_demo.rs @@ -1,34 +1,17 @@ -use herodb::db::{DB, DBBuilder}; use herodb::models::circle::{Circle, Member, Name, Wallet, Role, Record, RecordType}; -use std::path::Path; fn main() -> Result<(), Box> { - // Create a temporary directory for the database - let db_path = Path::new("./tmp/circle_demo"); - if db_path.exists() { - std::fs::remove_dir_all(db_path)?; - } - std::fs::create_dir_all(db_path)?; - - println!("Creating database at {:?}", db_path); - - // Create a database with all circle models registered - let db = DBBuilder::new(db_path) - .register_model::() - .register_model::() - .register_model::() - .register_model::() - .build()?; + println!("Circle Models Demo (In-Memory Version)"); + println!("=====================================\n"); // Create a circle - let mut circle = Circle::new( + let circle = Circle::new( 1, "ThreeFold Community".to_string(), "A circle for ThreeFold community members".to_string(), ); println!("Created circle: {:?}", circle); - db.set(&circle)?; // Create members let mut alice = Member::new( @@ -48,8 +31,6 @@ fn main() -> Result<(), Box> { bob.add_email("bob@example.com".to_string()); println!("Created members: {:?}, {:?}", alice, bob); - db.set(&alice)?; - db.set(&bob)?; // Create a domain name let mut domain = Name::new( @@ -69,7 +50,6 @@ fn main() -> Result<(), Box> { domain.add_admin("alice_pubkey".to_string()); println!("Created domain: {:?}", domain); - db.set(&domain)?; // Create wallets let mut alice_wallet = Wallet::new( @@ -94,39 +74,27 @@ fn main() -> Result<(), Box> { bob_wallet.set_asset("TFT".to_string(), 500.0); println!("Created wallets: {:?}, {:?}", alice_wallet, bob_wallet); - db.set(&alice_wallet)?; - db.set(&bob_wallet)?; // Link wallets to members alice.link_wallet(alice_wallet.id); bob.link_wallet(bob_wallet.id); - db.set(&alice)?; - db.set(&bob)?; + println!("Linked wallets to members"); - // Retrieve and display all data - println!("\nRetrieving data from database:"); + // Display all data + println!("\nDisplaying all data:"); - let circles = db.list::()?; - println!("Circles: {:#?}", circles); - - let members = db.list::()?; - println!("Members: {:#?}", members); - - let names = db.list::()?; - println!("Names: {:#?}", names); - - let wallets = db.list::()?; - println!("Wallets: {:#?}", wallets); + println!("Circles: {:#?}", vec![circle]); + println!("Members: {:#?}", vec![alice.clone(), bob.clone()]); + println!("Names: {:#?}", vec![domain]); + println!("Wallets: {:#?}", vec![alice_wallet.clone(), bob_wallet.clone()]); // Demonstrate wallet operations println!("\nDemonstrating wallet operations:"); - let mut alice_wallet = db.get::(1)?; println!("Alice's wallet before transfer: {:?}", alice_wallet); println!("Alice's wallet total value: {}", alice_wallet.total_value()); - let mut bob_wallet = db.get::(2)?; println!("Bob's wallet before transfer: {:?}", bob_wallet); println!("Bob's wallet total value: {}", bob_wallet.total_value()); @@ -134,14 +102,9 @@ fn main() -> Result<(), Box> { alice_wallet.set_asset("TFT".to_string(), 900.0); // Decrease Alice's TFT by 100 bob_wallet.set_asset("TFT".to_string(), 600.0); // Increase Bob's TFT by 100 - db.set(&alice_wallet)?; - db.set(&bob_wallet)?; - - let alice_wallet = db.get::(1)?; println!("Alice's wallet after transfer: {:?}", alice_wallet); println!("Alice's wallet total value: {}", alice_wallet.total_value()); - let bob_wallet = db.get::(2)?; println!("Bob's wallet after transfer: {:?}", bob_wallet); println!("Bob's wallet total value: {}", bob_wallet.total_value());