aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.rs19
-rw-r--r--src/models/post.rs13
-rw-r--r--src/posts.rs11
-rw-r--r--src/utils/mod.rs (renamed from src/lib.rs)17
4 files changed, 26 insertions, 34 deletions
diff --git a/src/main.rs b/src/main.rs
index 5084fbc..109d7d1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,17 +1,22 @@
-#![feature(plugin)]
+#![feature(plugin, custom_derive)]
#![plugin(rocket_codegen)]
-#[macro_use] extern crate rocket_blog;
#[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 diesel;
+extern crate dotenv;
+extern crate r2d2;
+extern crate r2d2_diesel;
extern crate rocket;
extern crate rocket_contrib;
-use rocket_blog::models;
use rocket_contrib::Json;
+#[macro_use] mod utils;
+mod models;
+mod schema;
mod posts;
#[derive(BartDisplay, Serialize)]
@@ -24,18 +29,18 @@ struct IndexTemplate<'a> {
implement_responder_for!(IndexTemplate<'a>);
#[get("/", format = "text/html")]
-fn index<'a>(conn: rocket_blog::DbConn) -> IndexTemplate<'a> {
+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: rocket_blog::DbConn) -> Json<Vec<models::Post>> {
+fn index_json(conn: utils::DbConn) -> Json<Vec<models::Post>> {
Json(models::Post::get_all(conn))
}
fn main() {
rocket::ignite()
- .manage(rocket_blog::init_db_pool())
+ .manage(utils::init_db_pool())
.mount("/", routes![index, index_json])
.mount("/posts", routes![posts::new, posts::create, posts::show, posts::edit, posts::update])
.launch();
diff --git a/src/models/post.rs b/src/models/post.rs
index b8453ce..922dbca 100644
--- a/src/models/post.rs
+++ b/src/models/post.rs
@@ -1,6 +1,7 @@
-use ::schema::posts;
+use schema::posts;
use diesel::prelude::*;
use diesel::{self, ExecuteDsl};
+use utils;
#[derive(AsChangeset, FromForm, Identifiable, Serialize, Queryable)]
pub struct Post {
@@ -19,7 +20,7 @@ pub struct NewPost {
}
impl Post {
- pub fn get_all(conn: ::DbConn) -> Vec<Post> {
+ pub fn get_all(conn: utils::DbConn) -> Vec<Post> {
use ::schema::posts::dsl::*;
posts.filter(published.eq(false))
.limit(5)
@@ -27,25 +28,25 @@ impl Post {
.expect("Error loading posts")
}
- fn get_internal(post_id: i32, conn: &::DbConn) -> Post {
+ fn get_internal(post_id: i32, conn: &utils::DbConn) -> Post {
use ::schema::posts::dsl::*;
posts.find(post_id)
.get_result(&**conn)
.expect(&format!("Unable to find post with id={}", post_id))
}
- pub fn get(post_id: i32, conn: ::DbConn) -> Post {
+ pub fn get(post_id: i32, conn: utils::DbConn) -> Post {
Post::get_internal(post_id, &conn)
}
- pub fn create(new_post: &NewPost, conn: ::DbConn) {
+ pub fn create(new_post: &NewPost, conn: utils::DbConn) {
diesel::insert(new_post)
.into(posts::table)
.execute(&*conn)
.expect("Error saving post.");
}
- pub fn update(updated_post: &Post, conn: ::DbConn) {
+ pub fn update(updated_post: &Post, conn: utils::DbConn) {
let p = Post::get_internal(updated_post.id, &conn);
diesel::update(&p)
.set(updated_post)
diff --git a/src/posts.rs b/src/posts.rs
index 859cce5..fde08a8 100644
--- a/src/posts.rs
+++ b/src/posts.rs
@@ -1,5 +1,6 @@
use rocket::request::Form;
use rocket::response::Redirect;
+use utils;
#[derive(BartDisplay)]
#[template = "templates/new_post.html"]
@@ -11,12 +12,12 @@ pub struct NewPostTemplate<'a> {
implement_responder_for!(NewPostTemplate<'a>);
#[get("/new", format = "text/html")]
-fn new<'a>(_conn: ::rocket_blog::DbConn) -> NewPostTemplate<'a> {
+fn new<'a>(_conn: utils::DbConn) -> NewPostTemplate<'a> {
NewPostTemplate { title: "Bloggen", post: Default::default() }
}
#[post("/create", data="<post>")]
-fn create(post: Form<::models::NewPost>, conn: ::rocket_blog::DbConn) -> Redirect {
+fn create(post: Form<::models::NewPost>, conn: utils::DbConn) -> Redirect {
::models::Post::create(post.get(), conn);
Redirect::to("/")
}
@@ -30,7 +31,7 @@ pub struct ShowPostTemplate {
implement_responder_for!(ShowPostTemplate);
#[get("/<id>", format = "text/html")]
-fn show<'a>(id: i32, conn: ::rocket_blog::DbConn) -> ShowPostTemplate {
+fn show<'a>(id: i32, conn: utils::DbConn) -> ShowPostTemplate {
let p = ::models::Post::get(id, conn);
ShowPostTemplate { post: p }
}
@@ -44,13 +45,13 @@ pub struct EditPostTemplate {
implement_responder_for!(EditPostTemplate);
#[get("/<id>/edit", format = "text/html")]
-fn edit(id: i32, conn: ::rocket_blog::DbConn) -> EditPostTemplate {
+fn edit(id: i32, conn: utils::DbConn) -> EditPostTemplate {
let p = ::models::Post::get(id, conn);
EditPostTemplate { post: p }
}
#[post("/update", data="<post>")]
-fn update(post: Form<::models::Post>, conn: ::rocket_blog::DbConn) -> Redirect {
+fn update(post: Form<::models::Post>, conn: utils::DbConn) -> Redirect {
::models::Post::update(post.get(), conn);
Redirect::to("/")
}
diff --git a/src/lib.rs b/src/utils/mod.rs
index ec821e6..1d697fe 100644
--- a/src/lib.rs
+++ b/src/utils/mod.rs
@@ -1,19 +1,5 @@
-#![feature(plugin, custom_derive)]
-#![plugin(rocket_codegen)]
-
-#[macro_use] extern crate diesel_codegen;
-#[macro_use] extern crate diesel;
-#[macro_use] extern crate serde_derive;
-
-extern crate dotenv;
-extern crate r2d2_diesel;
-extern crate r2d2;
-extern crate rocket;
-
-pub mod models;
-pub mod schema;
-
use diesel::pg::PgConnection;
+use r2d2;
use r2d2_diesel::ConnectionManager;
use dotenv::dotenv;
use std::env;
@@ -65,7 +51,6 @@ impl Deref for DbConn {
}
}
-#[macro_export]
macro_rules! implement_responder_for {
// Implement a responder for the given template type
//