65 lines
1.8 KiB
Rust
65 lines
1.8 KiB
Rust
// Examples for using the Zaz database
|
|
|
|
use crate::zaz::models::*;
|
|
use crate::zaz::factory::create_zaz_db;
|
|
use std::path::PathBuf;
|
|
use chrono::Utc;
|
|
|
|
/// Run a simple example of the DB operations
|
|
pub fn run_db_examples() -> Result<(), Box<dyn std::error::Error>> {
|
|
println!("Running Zaz DB examples...");
|
|
|
|
// Create a temp DB path
|
|
let db_path = PathBuf::from("/tmp/zaz-examples");
|
|
std::fs::create_dir_all(&db_path)?;
|
|
|
|
// Create DB instance
|
|
let db = create_zaz_db(&db_path)?;
|
|
|
|
// Example 1: User operations
|
|
println!("\n--- User Examples ---");
|
|
let user = User::new(
|
|
1,
|
|
"John Doe".to_string(),
|
|
"john@example.com".to_string(),
|
|
"secure123".to_string(),
|
|
"Example Corp".to_string(),
|
|
"User".to_string(),
|
|
);
|
|
|
|
db.set(&user)?;
|
|
println!("Inserted user: {}", user.name);
|
|
|
|
let retrieved_user = db.get::<User>(&user.id.to_string())?;
|
|
println!("Retrieved user: {} ({})", retrieved_user.name, retrieved_user.email);
|
|
|
|
// Example 2: Company operations
|
|
println!("\n--- Company Examples ---");
|
|
let company = Company::new(
|
|
1,
|
|
"Example Corp".to_string(),
|
|
"EX123456".to_string(),
|
|
Utc::now(),
|
|
"12-31".to_string(),
|
|
"info@example.com".to_string(),
|
|
"123-456-7890".to_string(),
|
|
"www.example.com".to_string(),
|
|
"123 Example St, Example City".to_string(),
|
|
BusinessType::Global,
|
|
"Technology".to_string(),
|
|
"An example company".to_string(),
|
|
CompanyStatus::Active,
|
|
);
|
|
|
|
db.set(&company)?;
|
|
println!("Inserted company: {}", company.name);
|
|
|
|
let companies = db.list::<Company>()?;
|
|
println!("Found {} companies", companies.len());
|
|
|
|
// Clean up
|
|
std::fs::remove_dir_all(db_path)?;
|
|
|
|
Ok(())
|
|
}
|