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/watch.rs Normal file
View file

@ -0,0 +1,61 @@
use owl::prelude::*;
#[model]
#[derive(Debug)]
pub struct Contact {
pub id: Id,
pub age: u16,
}
pub fn age_one_year(p: &mut Model<Contact>, db: &Database) {
p.write(db, |p| p.age += 1);
}
pub fn main() {
env_logger::init();
// Init
let db = Database::in_memory();
let mut c1 = db.save(Contact {
id: Id::String("c1".to_string()),
age: 15,
});
let mut c2 = db.save(Contact {
id: Id::String("c2".to_string()),
age: 17,
});
let mut c3 = db.save(Contact {
id: Id::String("c3".to_string()),
age: 16,
});
let age_18_watcher = db.watch::<Contact, _, _>(
|c| c.age == 18,
|c| {
println!("{} turned 18", c.id);
},
);
std::thread::spawn(move || loop {
age_18_watcher.process();
});
age_one_year(&mut c1, &db);
age_one_year(&mut c2, &db);
age_one_year(&mut c3, &db);
age_one_year(&mut c1, &db);
age_one_year(&mut c2, &db);
age_one_year(&mut c3, &db);
age_one_year(&mut c1, &db);
age_one_year(&mut c2, &db);
age_one_year(&mut c3, &db);
age_one_year(&mut c1, &db);
age_one_year(&mut c2, &db);
age_one_year(&mut c3, &db);
std::thread::sleep(std::time::Duration::from_secs(10));
}