commit
6c54873ca2
34 changed files with 5502 additions and 0 deletions
61
examples/watch.rs
Normal file
61
examples/watch.rs
Normal 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));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue