use rustdb::{
standard_builtins, AccessPagedData, AtomicFile, BuiltinMap, Database, SharedPagedData,
SimpleFileStorage, WebTransaction, INITSQL,
};
use std::net::TcpListener;
use std::sync::Arc;
fn main() {
let file = Box::new(SimpleFileStorage::new("..\\test.rustdb"));
let upd = Box::new(SimpleFileStorage::new("..\\test.upd"));
let stg = Box::new(AtomicFile::new(file, upd));
let spd = Arc::new(SharedPagedData::new(stg));
let apd = AccessPagedData::new_writer(spd);
let mut bmap = BuiltinMap::default();
standard_builtins(&mut bmap);
let db = Database::new(apd, INITSQL, Arc::new(bmap));
let listener = TcpListener::bind("127.0.0.1:3000").unwrap();
for tcps in listener.incoming() {
match tcps {
Err(e) => {
println!("Incoming connection error {:?}", e);
}
Ok(mut tcps) => {
match WebTransaction::new(&tcps) {
Err(e) => {
println!("Error getting query {:?}", e);
}
Ok(mut wq) => {
wq.trace();
let sql = "EXEC web.Main()";
db.run_timed(sql, &mut wq);
let _err = wq.write(&mut tcps);
db.save();
}
}
}
}
}
}