Skip to content

Commit 628d197

Browse files
committed
reduce verbosity of output, add nonblocking add
1 parent 3ff55aa commit 628d197

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

src/manager.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::reasoner::Reasoner;
22
use crate::error::{ReasonableError, Result};
3-
use log::info;
3+
use log::{info, debug};
44
use std::fmt;
55
use std::string::String;
66
use std::fs;
@@ -252,7 +252,7 @@ impl Manager {
252252

253253
let q = self.triple_store.prepare_query(&sparql, QueryOptions::default())?;
254254

255-
println!("query: {}", sparql);
255+
debug!("query: {}", sparql);
256256
let res = q.exec()?;
257257
if let QueryResults::Solutions(solutions) = res {
258258
let name_key = name.clone();
@@ -282,7 +282,7 @@ impl Manager {
282282

283283
let q = self.triple_store.prepare_query(&sparql, QueryOptions::default())?;
284284

285-
println!("query: {}", sparql);
285+
debug!("query: {}", sparql);
286286
let res = q.exec()?;
287287
if let QueryResults::Solutions(solutions) = res {
288288
return Ok(ViewMetadata{
@@ -325,7 +325,7 @@ pub fn parse_file(filename: &str) -> Result<Vec<(Node, Node, Node)>> {
325325
GraphFormat::RdfXml
326326
};
327327
let data = fs::read_to_string(filename)?;
328-
println!("format: {:?} for {}", gfmt, filename);
328+
debug!("format: {:?} for {}", gfmt, filename);
329329
let parser = GraphParser::from_format(gfmt);
330330
let triples: Vec<std::result::Result<Triple, std::io::Error>> = parser.read_triples(Cursor::new(data))?.collect();//.collect::<Result<Triple>>();
331331
Ok(triples.into_iter().filter_map(|tres| {

src/sqlite.rs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#![feature(proc_macro_hygiene, decl_macro)]
22
#[macro_use] extern crate rocket;
33
#[macro_use] extern crate serde_derive;
4+
use log::{info, debug, error};
45
use std::sync::Mutex;
56
use std::thread;
67
use rocket::State;
@@ -158,7 +159,6 @@ impl SQLiteManager {
158159
fn get_update_hook(&self, sender: mpsc::SyncSender<ChannelMessage>) -> Box<dyn FnMut(rusqlite::Action, &str, &str, i64) + Send> {
159160
Box::new(move |_act, _db_name, table_name, _rowid| {
160161
if table_name == "triples" {
161-
// println!("got {:?} {} {} {}", act, db_name, table_name, rowid);
162162
match sender.try_send(ChannelMessage::Refresh) {
163163
Ok(_) => return,
164164
Err(mpsc::TrySendError::Full(_e)) => return,
@@ -178,11 +178,10 @@ impl SQLiteManager {
178178
}
179179

180180
fn get_triples(&self) -> Result<Vec<(String, String, String)>>{
181-
println!("triggered");
181+
debug!("triggered");
182182
let mut stmt = self.conn.prepare("SELECT subject, predicate, object FROM triples")?;
183183

184184
let triples: Vec<(String, String, String)> = stmt.query_map(NO_PARAMS, |row| {
185-
//println!("row {:?}", row.columns());
186185
let s: String = row.get(0)?;
187186
let p: String = row.get(1)?;
188187
let o: String = row.get(2)?;
@@ -221,10 +220,10 @@ impl SQLiteManager {
221220
fn update(&mut self) -> Result<()> {
222221
// try to see if there are any new views
223222
if !self.changed {
224-
println!("triggered but no change");
223+
debug!("triggered but no change");
225224
return Ok(());
226225
} else {
227-
println!("changing row");
226+
debug!("changing row");
228227
}
229228

230229
// TODO: return true if the input changed
@@ -233,10 +232,10 @@ impl SQLiteManager {
233232
for view in self.views.iter() {
234233
tx.execute(&view.get_delete_tab(), NO_PARAMS)?;
235234
//tx.execute(format!("DELETE FROM view_{};", view.name()).as_str(), NO_PARAMS)?;
236-
println!("insert: {}", view.get_insert_sql());
235+
debug!("insert: {}", view.get_insert_sql());
237236
let mut stmt = tx.prepare(&view.get_insert_sql())?;
238237
let tuples: Vec<Vec<String>> = view.contents_string()?;
239-
println!("got {} for {}", tuples.len(), view.name());
238+
info!("got {} for {}", tuples.len(), view.name());
240239
for tup in tuples {
241240
stmt.execute(&tup)?;
242241
}
@@ -256,7 +255,12 @@ impl SQLiteManager {
256255
let res = self.recv.recv();
257256
match res {
258257
Ok(ChannelMessage::ViewDef(vdef, tx)) => { self.add_view(vdef.name, &vdef.query)?; tx.send(()).unwrap(); },
259-
Ok(ChannelMessage::TripleAdd(trips, tx)) => { self.add_triples(trips)?; tx.send(()).unwrap(); },
258+
Ok(ChannelMessage::TripleAdd(trips, tx)) => {
259+
self.add_triples(trips)?;
260+
if let Some(c) = tx {
261+
c.send(()).unwrap();
262+
}
263+
},
260264
Ok(ChannelMessage::Refresh) => self.update()?,
261265
Err(e) => return Err(ReasonableError::ChannelRecv(e)),
262266
};
@@ -273,7 +277,7 @@ struct TableResponse {
273277
#[derive(Debug)]
274278
enum ChannelMessage {
275279
ViewDef(ViewDef, mpsc::Sender<()>),
276-
TripleAdd(Vec<JsonTriple>, mpsc::Sender<()>),
280+
TripleAdd(Vec<JsonTriple>, Option<mpsc::Sender<()>>),
277281
Refresh,
278282
}
279283

@@ -289,7 +293,6 @@ struct ViewChannel(mpsc::SyncSender<ChannelMessage>);
289293
type DbConn = Mutex<rusqlite::Connection>;
290294
type RdfConn = Mutex<MemoryStore>;
291295

292-
293296
#[get("/view/<name>", format = "json")]
294297
fn getview(name: String, conn: State<DbConn>, _store: State<RdfConn>, _tx: State<ViewChannel>) -> Json<TableResponse> {
295298
let mut rows: Vec<Vec<String>> = Vec::new();
@@ -304,7 +307,7 @@ fn getview(name: String, conn: State<DbConn>, _store: State<RdfConn>, _tx: State
304307
header = row.column_names().iter().map(|s| s.to_string()).collect();
305308
Ok(())
306309
}).unwrap().count();
307-
println!("rows {}", rows.len());
310+
info!("rows {}", rows.len());
308311
Json(TableResponse{header, rows})
309312
}
310313

@@ -317,17 +320,23 @@ fn makeview(data: Json<ViewDef>, _conn: State<DbConn>, _store: State<RdfConn>, t
317320
}
318321

319322
#[post("/add", data = "<data>", format = "json")]
320-
fn addtriples(data: Json<Vec<JsonTriple>>, _conn: State<DbConn>, _store: State<RdfConn>, tx: State<ViewChannel>) -> Json<()> {
323+
fn addtriples(data: Json<Vec<JsonTriple>>, tx: State<ViewChannel>) -> Json<()> {
321324
let (send, recv) = mpsc::channel();
322-
tx.0.send(ChannelMessage::TripleAdd(data.0, send)).expect("add triples");
325+
tx.0.send(ChannelMessage::TripleAdd(data.0, Some(send))).expect("add triples");
323326
recv.recv().unwrap();
324327
Json(())
325328
}
326329

330+
#[post("/addnb", data = "<data>", format = "json")]
331+
fn addtriples_nonblock(data: Json<Vec<JsonTriple>>, tx: State<ViewChannel>) -> Json<()> {
332+
tx.0.send(ChannelMessage::TripleAdd(data.0, None)).expect("add triples");
333+
Json(())
334+
}
335+
327336
#[post("/query", data = "<data>", format = "json")]
328337
fn doquery(data: Json<String>, _conn: State<DbConn>, store: State<RdfConn>, _tx: State<ViewChannel>) -> Result<Json<Vec<Vec<String>>>> {
329338
let sparql = format!("{}{}", qfmt, data.0);
330-
println!("do query {}", sparql);
339+
info!("do query {}", sparql);
331340
let q = store.lock().expect("rdf lock").prepare_query(&sparql, QueryOptions::default())?;
332341
let res = q.exec()?;
333342
let mut rows: Vec<Vec<String>> = Vec::new();
@@ -340,7 +349,6 @@ fn doquery(data: Json<String>, _conn: State<DbConn>, store: State<RdfConn>, _tx:
340349
for col in &vars {
341350
row.push(vals.get(col.as_str()).unwrap().clone().to_string());
342351
}
343-
println!("row {:?}", row);
344352
rows.push(row);
345353
}
346354
},
@@ -373,7 +381,7 @@ fn rocket(filename: &str) {
373381
.manage(Mutex::new(conn))
374382
.manage(Mutex::new(store))
375383
.manage(ViewChannel(tx))
376-
.mount("/", routes![getview, makeview, addtriples, doquery])
384+
.mount("/", routes![getview, makeview, addtriples, addtriples_nonblock, doquery])
377385
.launch();
378386
});
379387

0 commit comments

Comments
 (0)