summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs40
1 files changed, 34 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs
index 16e7bbd..bfd53b8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -8,6 +8,7 @@ use rspotify::spotify::util::get_token;
mod serve;
+//#[tokio::main]
fn main() {
// Set client_id and client_secret in .env file or
// export CLIENT_ID="your client_id"
@@ -22,16 +23,37 @@ fn main() {
// .build();
//
// looking up article 42 should yield the article we inserted with a vote count of 1
- init();
+ let mut rt = tokio::runtime::Builder::new()
+ .enable_all()
+ .threaded_scheduler()
+ .thread_name("voter")
+ .build()
+ .unwrap();
+
+ let mut db = rt
+ .block_on(noria::ControllerHandle::from_zk("127.0.0.1:2181"))
+ .unwrap();
+ println!("test");
+ rt.block_on(db.install_recipe(
+ "
+ CREATE TABLE Article (aid int, title varchar(255), url text, PRIMARY KEY(aid));
+ CREATE TABLE Vote (aid int, uid int);
+",
+ ))
+ .unwrap();
+ println!("staring_init");
+ let init = init();
rocket::ignite()
.mount("/", routes![serve::token, serve::get_tracks])
.launch();
+ rt.block_on(init);
}
-
async fn init() {
- let mut db = noria::ControllerHandle::from_zk("127.0.0.1:2181").await.unwrap();
+ let mut db = noria::ControllerHandle::from_zk("127.0.0.1:2181")
+ .await
+ .unwrap();
//db.ready();
//println!("test {:?}", db.url());
@@ -40,7 +62,9 @@ async fn init() {
CREATE TABLE Article (aid int, title varchar(255), url text, PRIMARY KEY(aid));
CREATE TABLE Vote (aid int, uid int);
",
- );
+ )
+ .await
+ .unwrap();
println!("test");
// we can then get handles that let us insert into the new tables
let mut article = db.table("Article").await.unwrap();
@@ -52,7 +76,8 @@ async fn init() {
let url = "https://pdos.csail.mit.edu";
article
.insert(vec![aid.into(), title.into(), url.into()])
- .await.unwrap();
+ .await
+ .unwrap();
// and then vote for it
vote.insert(vec![aid.into(), 1.into()]).await.unwrap();
@@ -68,7 +93,9 @@ async fn init() {
SELECT Article.aid, title, url, VoteCount.votes AS votes \
FROM Article LEFT JOIN VoteCount ON (Article.aid = VoteCount.aid) \
WHERE Article.aid = ?;",
- );
+ )
+ .await
+ .unwrap();
// and then get handles that let us execute those queries to fetch their results
let mut awvc = db.view("ArticleWithVoteCount").await.unwrap();
@@ -82,4 +109,5 @@ async fn init() {
1.into()
]]
);
+ println!("init done");
}