```rust use semilattice_database::prelude::*;
let dir="./sl-test/";
if std::path::Path::new(dir).exists(){ std::fs::removedirall(dir).unwrap(); std::fs::createdirall(dir).unwrap(); }else{ std::fs::createdirall(dir).unwrap(); } let mut database=Database::new(dir).unwrap();
let collectionperson=database.collectionidorcreate("person").unwrap(); let collectionhistory=database.collectionidorcreate("history").unwrap();
if let Ok(mut sess)=database.session("test"){ sess.update(vec![ Record::New{ collectionid:collectionperson ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("name","Joe") ,KeyValue::new("birthday","1972-08-02") ] ,depends:Depends::Overwrite(vec![]) ,pends:vec![Pend::new("history",vec![ Record::New{ collectionid:collectionhistory ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("date","1972-08-02") ,KeyValue::new("event","Birth") ] ,depends:Depends::Default ,pends:vec![] } ,Record::New{ collectionid:collectionhistory ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("date","1999-12-31") ,KeyValue::new("event","Mariage") ] ,depends:Depends::Default ,pends:vec![] } ])] } ,Record::New{ collectionid:collectionperson ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("name","Tom") ,KeyValue::new("birthday","2000-12-12") ] ,depends:Depends::Default ,pends:vec![Pend::new("history",vec![ Record::New{ collectionid:collectionhistory ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("date","2000-12-12") ,KeyValue::new("event","Birth") ] ,depends:Depends::Default ,pends:vec![] } ])] } ,Record::New{ collectionid:collectionperson ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("name","Billy") ,KeyValue::new("birthday","1982-03-03") ] ,depends:Depends::Default ,pends:vec![] } ]); sess.commit(); }
if let ( Some(person) ,Some(history) )=( database.collection(collectionperson) ,database.collection(collectionhistory) ){ for i in database.beginsearch(person).result(){ println!( "{},{}" ,person.fieldstr(i,"name") ,person.fieldstr(i,"birthday") ); for h in database.beginsearch(history).depend(vec![ Depend::new("history",CollectionRow::new(collectionperson,i)) ]).result(){ println!( " {} : {}" ,history.fieldstr(h,"date") ,history.fieldstr(h,"event") ); } } } if let Ok(mut sess)=database.session("test"){ sess.update(vec![ Record::Update{ collectionid:collectionperson ,row:1 ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![KeyValue::new("name","Renamed Joe")] ,depends:Depends::Default ,pends:vec![] } ]); } if let Ok(mut sess)=database.session("test"){ let search=sess.beginsearch(collectionperson).searchactivity(Activity::Active); for r in search.result(){ println!( "{},{}" ,sess.fieldstr(collectionperson,r,"name") ,sess.fieldstr(collectionperson,r,"birthday") ); } sess.commit(); }
let test1=database.collectionidorcreate("test1").unwrap(); let range=1..=10; if let Ok(mut sess)=database.session("test"){ for i in range.clone(){ sess.update(vec![ Record::New{ collectionid:test1 ,activity:Activity::Active ,termbegin:Term::Defalut ,termend:Term::Defalut ,fields:vec![ KeyValue::new("num",i.tostring()) ,KeyValue::new("numby3",(i*3).to_string()) ] ,depends:Depends::Overwrite(vec![]) ,pends:vec![] } ]); } sess.commit(); }
if let Ok(mut sess)=database.session("test"){ sess.update(vec![ Record::Update{ collectionid:test1 ,row:3 ,activity:Activity::Inactive ,termbegin:Term::Defalut ,term_end:Term::Defalut ,fields:vec![] ,depends:Depends::Overwrite(vec![]) ,pends:vec![] } ]); sess.commit(); }
if let Some(t1)=database.collection(test1){ let mut sum=0.0; for i in range.clone(){ sum+=t1.fieldnum(i,"num"); println!( "{},{},{},{},{},{},{},{}" ,t1.serial(i) ,if t1.activity(i)==Activity::Active{ "Active" }else{ "Inactive" } ,t1.uuidstr(i) ,t1.lastupdated(i) ,t1.termbegin(i) ,t1.termend(i) ,t1.fieldstr(i,"num") ,t1.fieldstr(i,"numby3") ); } assert_eq!(sum,55.0); } ```