diff options
Diffstat (limited to 'src/server.rs')
-rw-r--r-- | src/server.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/server.rs b/src/server.rs index 54beb34..8a45e37 100644 --- a/src/server.rs +++ b/src/server.rs @@ -26,7 +26,7 @@ impl iron::typemap::Key for State { } #[derive(Debug, Clone, Serialize)] -struct UserId(u64); +struct UserId(i64); impl iron_sessionstorage::Value for UserId { fn get_key() -> &'static str { "user_id" @@ -49,7 +49,7 @@ fn user_id(r: &mut Request) -> IronResult<UserId> { let e: LinoError = From::from(e); e })?; - let user_id = UserId(rng.next_u64()); + let user_id = UserId((rng.next_u64() >> 1) as i64); r.session().set(user_id.clone())?; Ok(user_id) } @@ -106,6 +106,7 @@ fn make_renderer() -> HandlebarsEngine { fn quotes(r: &mut Request) -> IronResult<Response> { let mut result = make_result(r)?; + let user_id = user_id(r)?; let quote_id = get_param(r, "id").ok().and_then( |id| id.parse::<i64>().ok(), ); @@ -115,12 +116,13 @@ fn quotes(r: &mut Request) -> IronResult<Response> { let mu = r.get::<Write<State>>().unwrap(); let state = mu.lock().unwrap(); match quote_id { - Some(id) => vec![data::get_quote(&state.connection, id)?], - None => data::get_quotes(&state.connection, &ordering)?, + Some(id) => vec![data::get_quote(&state.connection, id, user_id.0)?], + None => data::get_quotes(&state.connection, user_id.0, &ordering)?, } }; let quotes = quotes.into_iter().collect::<Vec<_>>(); result.insert("quotes".to_string(), to_json("es)); + result.insert("scores".to_string(), to_json(&(1..6).collect::<Vec<_>>())); Ok(Response::with(( status::Ok, Header(ContentType::html()), @@ -166,7 +168,7 @@ fn add_post(r: &mut Request) -> IronResult<Response> { Ok(Response::with(( status::Ok, Header(ContentType::html()), - Template::new("add_post", result) + Template::new("add_post", result), ))) } @@ -203,6 +205,7 @@ fn approve(r: &mut Request) -> IronResult<Response> { } pub fn vote(r: &mut Request) -> IronResult<Response> { + let user_id = user_id(r)?; let quote_id = get_param(r, "id").and_then(|id| { id.parse::<i64>().map_err(|e| { From::from(LinoError::BadRequest(format!("id: {}", e))) @@ -220,8 +223,8 @@ pub fn vote(r: &mut Request) -> IronResult<Response> { let quote = { let mu = r.get::<Write<State>>().unwrap(); let state = mu.lock().unwrap(); - data::new_vote(&state.connection, quote_id, vote)?; - data::get_quote(&state.connection, quote_id)? + data::new_vote(&state.connection, user_id.0, quote_id, vote)?; + data::get_quote(&state.connection, quote_id, user_id.0)? }; let mut result = make_result(r)?; @@ -230,7 +233,7 @@ pub fn vote(r: &mut Request) -> IronResult<Response> { Ok(Response::with(( status::Ok, Header(ContentType::html()), - Template::new("vote", result), + Template::new("vote", to_json("e)), ))) } |