Skip to content

Instantly share code, notes, and snippets.

@jonathanGB
Created December 16, 2019 23:13
Show Gist options
  • Save jonathanGB/90637c548c1ce583066598bc783ccb60 to your computer and use it in GitHub Desktop.
Save jonathanGB/90637c548c1ce583066598bc783ccb60 to your computer and use it in GitHub Desktop.
Noria insert script with command-line flags
extern crate structopt;
use structopt::StructOpt;
use noria::{ControllerHandle, DataType};
#[derive(StructOpt, Debug)]
#[structopt(name = "noria-script")]
pub struct Config {
deployment: String,
#[structopt(long = "no-insert")]
no_insert: bool,
}
#[tokio::main]
async fn main() {
let config = Config::from_args();
println!("config: {:?}", config);
let vote_sql = "CREATE TABLE Vote (aid int, bid int, cid int, did int, eid int, uid int);";
let range_sql = "QUERY VoteEquiAndInequality: \
SELECT * \
FROM Vote \
WHERE aid = ? AND bid = ? AND cid = ? AND did = ? AND eid = ? AND uid >= ? AND uid < ?;";
let deployment_path = format!("localhost:2181/{}", config.deployment);
let mut db = ControllerHandle::from_zk(&deployment_path)
.await
.unwrap();
db.extend_recipe(vote_sql).await.unwrap();
db.extend_recipe(range_sql).await.unwrap();
let mut vote = db.table("Vote").await.unwrap();
let mut veai = db.view("VoteEquiAndInequality").await.unwrap();
let dt_0 : DataType = 0.into();
let dt_1 : DataType = 1.into();
let dt_2 : DataType = 2.into();
let dt_3 : DataType = 3.into();
let dt_4 : DataType = 4.into();
let dt_5 : DataType = 5.into();
let dt_6 : DataType = 6.into();
if !config.no_insert {
// Inserts.
vote.insert(vec![dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_2.clone()]).await.unwrap();
vote.insert(vec![dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_3.clone()]).await.unwrap();
vote.insert(vec![dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_0.clone(), dt_4.clone()]).await.unwrap();
vote.insert(vec![dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_2.clone()]).await.unwrap();
vote.insert(vec![dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_3.clone()]).await.unwrap();
vote.insert(vec![dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_4.clone()]).await.unwrap();
vote.insert(vec![dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_5.clone()]).await.unwrap();
vote.insert(vec![dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_6.clone()]).await.unwrap();
vote.insert(vec![dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone()]).await.unwrap();
vote.insert(vec![dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_3.clone()]).await.unwrap();
vote.insert(vec![dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_2.clone(), dt_4.clone()]).await.unwrap();
}
// Lookups.
println!("{:?}", veai.lookup(&[dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_1.clone(), dt_2.clone(), dt_6.clone()], true).await.unwrap());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment