diff options
| -rw-r--r-- | src/data.rs | 35 | ||||
| -rw-r--r-- | src/server.rs | 10 | 
2 files changed, 11 insertions, 34 deletions
diff --git a/src/data.rs b/src/data.rs index 2149a06..b5199e2 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1,5 +1,3 @@ -use serde_json::{Value, Map}; -use handlebars_iron::handlebars::to_json;  use rusqlite::Connection;  use error::Result; @@ -13,24 +11,6 @@ pub struct Quote {      content: String,  } -pub fn make_data() -> Map<String, Value> { -    let mut data = Map::new(); -    data.insert( -        "quotes".to_string(), -        to_json(&vec![ -            &Quote { -                id: 1, -                author: "panda_man".to_owned(), -                date: "2017-07-01".to_owned(), -                score: format!("{:.2}", 450.0 / 96.0), -                votes: 99, -                content: "<orbekk> hvor er jantho?".to_owned(), -            }, -        ]), -    ); -    data -} -  pub fn init(c: &Connection) -> Result<()> {      info!("Initializing db");      try!(c.execute_batch( @@ -69,7 +49,7 @@ pub fn populate_test_db(c: &Connection) -> Result<()> {          (1, 3),          (1, 1),          (2, 3), -        (1, 4); +        (2, 4);      "#,      ));      Ok(()) @@ -81,9 +61,10 @@ pub fn get_quotes(c: &Connection) -> Result<Vec<Quote>> {      SELECT q.id, q.timestamp, q.author, q.content,             sum(v.score), count(v.score)      FROM quotes q -    JOIN votes v +    JOIN votes v ON (q.id = v.quote_id)      WHERE q.approved      GROUP BY 1, 2, 3, 4; +    ORDER BY q.id DESC;    "#,      )?; @@ -97,6 +78,12 @@ pub fn get_quotes(c: &Connection) -> Result<Vec<Quote>> {              votes: row.get(5),          }      })?; -    let result = rows.map(|r| r.map_err(|e| From::from(e))).collect(); -    result + +    let result = rows.map(|r| r.map_err(|e| From::from(e))) +        .collect::<Result<Vec<Quote>>>(); +    // For some reason, the ordering from sqlite doesn't work. +    result.map(|mut queries| { +        queries.sort_by_key(|q| -q.id); +        queries +    })  } diff --git a/src/server.rs b/src/server.rs index 4af8c83..404c3b2 100644 --- a/src/server.rs +++ b/src/server.rs @@ -34,15 +34,6 @@ fn make_renderer() -> HandlebarsEngine {      e  } -fn info(_r: &mut Request) -> IronResult<Response> { -    let data = data::make_data(); -    Ok(Response::with(( -        status::Ok, -        Header(ContentType::html()), -        Template::new("quotes", data), -    ))) -} -  fn quotes(r: &mut Request) -> IronResult<Response> {      let mut result = Map::new();      let quotes = { @@ -61,7 +52,6 @@ fn quotes(r: &mut Request) -> IronResult<Response> {  pub fn serve(state: State, port: u16) {      let router =          router!( -        info: get "/info" => info,          index: get "/" => quotes,      );      let mut chain = Chain::new(router);  | 
