#![feature(plugin, custom_derive)] #![plugin(rocket_codegen)] #[macro_use] extern crate bart_derive; #[macro_use] extern crate diesel_codegen; #[macro_use] extern crate diesel; #[macro_use] extern crate serde_derive; extern crate dotenv; extern crate r2d2; extern crate r2d2_diesel; extern crate rocket; extern crate rocket_contrib; use rocket_contrib::Json; #[macro_use] mod utils; mod models; mod schema; mod posts; #[derive(BartDisplay, Serialize)] #[template = "templates/index.html"] struct IndexTemplate<'a> { title: &'a str, posts: Vec } implement_responder_for!(IndexTemplate<'a>); #[get("/", format = "text/html")] fn index<'a>(conn: utils::DbConn) -> IndexTemplate<'a> { IndexTemplate { title: "Bloggen", posts: models::Post::get_all(conn) } } #[get("/", format = "application/json")] fn index_json(conn: utils::DbConn) -> Json> { Json(models::Post::get_all(conn)) } fn main() { rocket::ignite() .manage(utils::init_db_pool()) .mount("/", routes![index, index_json]) .mount("/posts", routes![posts::new, posts::create, posts::show, posts::edit, posts::update]) .launch(); }