use sqjson::{YourDb, DbError};
use serde_json::json;
fn main() -> Result<(), DbError> {
let mut db = YourDb::open("jsondb.db")?;
db.put("user:1", &json!({ "name": "Alice", "age": 30, "city": "NY" }))?;
db.put("user:2", &json!({ "name": "Bob", "age": 25, "city": "LA" }))?;
db.put("user:3", &json!({ "name": "Charlie", "age": 30, "city": "NY" }))?;
db.put("user:4", &json!({ "name": "Diana", "age": 22, "city": "LA" }))?;
db.flush()?;
println!("\n-- All Records --");
db.show_all()?;
if let Some(user) = db.get("user:2")? {
println!("\nโ
Found user:2: {}", user);
}
if let Some(age) = db.get_field("user:1", "age")? {
println!("๐ง user:1 age is: {}", age);
}
let users_age_30 = db.query("age", 30)?;
println!("\n๐ Users with age 30: {:?}", users_age_30);
let users_city_ny = db.query("city", "NY")?;
println!("๐ Users in NY: {:?}", users_city_ny);
let users_city_la = db.query("city", "LA")?;
println!("๐ Users in LA: {:?}", users_city_la);
let older_than_24 = db.filter(|doc| doc["age"].as_u64().unwrap_or(0) > 24)?;
println!("\n๐ฏ Users older than 24:");
for (key, user) in older_than_24 {
println!("{} => {}", key, user);
}
let first_ny_user = db.query_page("city", "NY", 1, 0)?;
println!("\n๐ First user in NY via pagination: {:?}", first_ny_user);
db.export_query("city", "LA", "la_users.json")?;
println!("๐ฆ Exported users in LA to la_users.json");
let age_range = db.range_query("age", json!(23), json!(30))?;
println!("\n๐ Users with age between 23 and 30: {:?}", age_range);
db.update_field("user:2", "city", json!("SF"))?;
println!("\nโ๏ธ Updated user:2 city to SF");
if let Some(user2) = db.get("user:2")? {
println!("user:2 => {}", user2);
}
let name_contains_li = db.search_contains("name", "li")?;
println!("\n๐ Users with 'li' in their name: {:?}", name_contains_li);
db.delete("user:3")?;
println!("\n๐ Deleted user:3");
db.flush()?;
db.export_to_file("backup.json")?;
println!("\n๐ค Exported DB to backup.json");
println!("\n-- Final Records After Delete --");
db.show_all()?;
Ok(())
}