Created
December 16, 2019 23:13
-
-
Save jonathanGB/90637c548c1ce583066598bc783ccb60 to your computer and use it in GitHub Desktop.
Noria insert script with command-line flags
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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