|
@@ -13,7 +13,9 @@ use diesel::prelude::*;
|
|
use diesel::result::Error;
|
|
use diesel::result::Error;
|
|
use rand::Rng;
|
|
use rand::Rng;
|
|
use rocket_contrib::json::Json;
|
|
use rocket_contrib::json::Json;
|
|
-use rocket_contrib::templates::Template;
|
|
|
|
|
|
+use rocket::config::{Config, LoggingLevel, Environment};
|
|
|
|
+use rocket::response::content;
|
|
|
|
+use yarte::Template;
|
|
|
|
|
|
mod db;
|
|
mod db;
|
|
mod models;
|
|
mod models;
|
|
@@ -78,22 +80,28 @@ fn queries(conn: db::DbConn, q: u16) -> Json<Vec<models::World>> {
|
|
Json(results)
|
|
Json(results)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#[derive(Template)]
|
|
|
|
+#[template(path = "fortunes.html.hbs")]
|
|
|
|
+pub struct FortunesTemplate<'a> {
|
|
|
|
+ pub fortunes: &'a Vec<models::Fortune>
|
|
|
|
+}
|
|
|
|
+
|
|
#[get("/fortunes")]
|
|
#[get("/fortunes")]
|
|
-fn fortunes(conn: db::DbConn) -> Template {
|
|
|
|
|
|
+fn fortunes(conn: db::DbConn) -> content::Html<String> {
|
|
use schema::fortune::dsl::*;
|
|
use schema::fortune::dsl::*;
|
|
|
|
|
|
- let mut context = fortune
|
|
|
|
|
|
+ let mut fortunes = fortune
|
|
.load::<models::Fortune>(&*conn)
|
|
.load::<models::Fortune>(&*conn)
|
|
.expect("error loading fortunes");
|
|
.expect("error loading fortunes");
|
|
|
|
|
|
- context.push(models::Fortune {
|
|
|
|
|
|
+ fortunes.push(models::Fortune {
|
|
id: 0,
|
|
id: 0,
|
|
message: "Additional fortune added at request time.".to_string(),
|
|
message: "Additional fortune added at request time.".to_string(),
|
|
});
|
|
});
|
|
|
|
|
|
- context.sort_by(|a, b| a.message.cmp(&b.message));
|
|
|
|
|
|
+ fortunes.sort_by(|a, b| a.message.cmp(&b.message));
|
|
|
|
|
|
- Template::render("fortunes", &context)
|
|
|
|
|
|
+ content::Html(FortunesTemplate{fortunes: &fortunes}.call().expect("error rendering template"))
|
|
}
|
|
}
|
|
|
|
|
|
#[get("/updates")]
|
|
#[get("/updates")]
|
|
@@ -138,7 +146,14 @@ fn updates(conn: db::DbConn, q: u16) -> Json<Vec<models::World>> {
|
|
}
|
|
}
|
|
|
|
|
|
fn main() {
|
|
fn main() {
|
|
- rocket::ignite()
|
|
|
|
|
|
+ let mut config = Config::build(Environment::Production)
|
|
|
|
+ .address("0.0.0.0")
|
|
|
|
+ .port(8000)
|
|
|
|
+ .log_level(LoggingLevel::Off)
|
|
|
|
+ .workers((num_cpus::get()*16) as u16)
|
|
|
|
+ .expect("failed to generate config");
|
|
|
|
+ config.set_secret_key("dY+Rj2ybjGxKetLawKGSWi6EzESKejvENbQ3stffZg0=").expect("failed to set secret");
|
|
|
|
+ rocket::custom(config)
|
|
.mount(
|
|
.mount(
|
|
"/",
|
|
"/",
|
|
routes![
|
|
routes![
|
|
@@ -153,6 +168,5 @@ fn main() {
|
|
],
|
|
],
|
|
)
|
|
)
|
|
.manage(db::init_pool())
|
|
.manage(db::init_pool())
|
|
- .attach(Template::fairing())
|
|
|
|
.launch();
|
|
.launch();
|
|
}
|
|
}
|