init
Some checks failed
ci/woodpecker/push/test Pipeline failed

This commit is contained in:
JMARyA 2025-04-28 18:53:21 +02:00
commit 6c54873ca2
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
34 changed files with 5502 additions and 0 deletions

61
examples/references.rs Normal file
View file

@ -0,0 +1,61 @@
use owl::{db::model::person::Person, prelude::*};
#[model]
#[derive(Debug)]
pub struct Car {
pub id: Id,
pub price: u32,
pub driver: IdRef<Person>,
}
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()
);
}