```rust use versatiledata::prelude::*; use semilatticedatabase::{ Database ,TransactionRecord ,CollectionRow };
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.collectionid("person").unwrap(); let collectionhistory=database.collectionid("history").unwrap();
let mut t=database.begintransaction(); t.update(&mut vec![ TransactionRecord::new( collectionperson ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("name","Joe".tostring()) ,("birthday","1972-08-02".tostring()) ] ,vec![] ,vec![("history",vec![ TransactionRecord::new( collectionhistory ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("date","1972-08-02".tostring()) ,("event","Birth".tostring()) ] ,vec![] ,vec![] ) ,TransactionRecord::new( collectionhistory ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("date","1999-12-31".tostring()) ,("event","Mariage".tostring()) ] ,vec![] ,vec![] ) ])] ) ,TransactionRecord::new( collectionperson ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("name","Tom".tostring()) ,("birthday","2000-12-12".tostring()) ] ,vec![] ,vec![("history",vec![ TransactionRecord::new( collectionhistory ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("date","2000-12-12".tostring()) ,("event","Birth".tostring()) ] ,vec![] ,vec![] ) ])] ) ,TransactionRecord::new( collectionperson ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("name","Billy".tostring()) ,("birthday","1982-03-03".to_string()) ] ,vec![] ,vec![] ) ]); t.commit();
t.delete(collection_person,2); t.commit();
let relation=database.relation(); if let Some(p)=database.collection(collectionperson){ for i in 1..=3{ println!( "{},{}" ,p.fieldstr(i,"name") ,p.fieldstr(i,"birthday") ); for h in relation.childs("history",&CollectionRow::new(collectionperson,i)){ if let Some(col)=database.collection(h.collectionid()){ let row=h.row(); println!( " {} : {}" ,col.fieldstr(row,"date") ,col.field_str(row,"event") );
}
}
}
}
let test1=database.collectionid("test1").unwrap(); let mut t=database.begintransaction(); let range=1..=10; for i in range.clone(){ t.update(&mut vec![ TransactionRecord::new( test1 ,Update::New ,Activity::Active ,0 ,0 ,vec![ ("num",i.tostring()) ,("numby3",(i*3).tostring()) ] ,vec![] ,vec![] ) ]); } t.update(&mut vec![ TransactionRecord::new(test1,Update::Row(3),Activity::Inactive,0,0,vec![],vec![],vec![]) ]); t.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") ); } asserteq!(sum,55.0);
let r=t1
.search_field("num",Field::Range(b"3".to_vec(),b"8".to_vec()))
.search_default() //Automatic execution of the following two lines
//.search_term(Term::In(chrono::Local::now().timestamp()))
//.search_actibity(Activity::Active)
.result()
;
println!("{:?}",r);
}