use owl::{db::model::person::Person, prelude::*}; #[model] #[derive(Debug)] pub struct Car { pub id: Id, pub price: u32, pub driver: IdRef, } pub fn main() { env_logger::init(); // Init let db = Database::in_memory(); let per = Person::new_id("perso", "P1", ""); let per2: Person = Person::new_id("perso2", "P2", ""); // Save let car = Car { id: Id::new_ulid(), price: 1000, driver: per.reference(), }; db.save(per); let per2 = db.save(per2); let mut car = db.save(car); println!( "P1 has {} cars", db.query(|car: &Car| { car.driver .dereference(&db) .read() .first_name .current() .unwrap() .as_str() == "P1" }) .iter() .count() ); car.write(&db, |car| { car.driver = per2.reference(); }); println!( "P1 has {} cars", db.query(|car: &Car| { car.driver .try_dereference(&db) .map(|x| x.read().first_name.current().unwrap().as_str() == "P1") .unwrap_or(false) }) .iter() .count() ); }