diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2018-01-10 21:14:50 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2018-01-10 21:14:50 +0100 |
commit | f6e51533077fa13515c40c0a869ab8c589ceb5d2 (patch) | |
tree | 366e071c56a413bf600c41e36f1e2f7a03e93df3 /src/models | |
parent | 42413235bed80e9af6a9655dba504dbf2bdc572c (diff) | |
download | rocket-blog-f6e51533077fa13515c40c0a869ab8c589ceb5d2.tar.gz rocket-blog-f6e51533077fa13515c40c0a869ab8c589ceb5d2.tar.bz2 rocket-blog-f6e51533077fa13515c40c0a869ab8c589ceb5d2.zip |
Make proper module of models
Diffstat (limited to 'src/models')
-rw-r--r-- | src/models/mod.rs | 3 | ||||
-rw-r--r-- | src/models/post.rs | 51 |
2 files changed, 54 insertions, 0 deletions
diff --git a/src/models/mod.rs b/src/models/mod.rs new file mode 100644 index 0000000..0d38f29 --- /dev/null +++ b/src/models/mod.rs @@ -0,0 +1,3 @@ +pub mod post; +pub use self::post::Post; +pub use self::post::NewPost; diff --git a/src/models/post.rs b/src/models/post.rs new file mode 100644 index 0000000..f7c35ac --- /dev/null +++ b/src/models/post.rs @@ -0,0 +1,51 @@ +use ::schema::posts; +use diesel::prelude::*; +use diesel::{self, ExecuteDsl}; + +#[derive(FromForm, Serialize, Queryable)] +pub struct Post { + pub id: i32, + pub title: String, + pub body: String, + pub published: bool, +} + +#[derive(Default, FromForm, Insertable)] +#[table_name="posts"] +pub struct NewPost { + pub title: String, + pub body: String, + pub published: bool, +} + +impl Post { + pub fn get_all(conn: ::DbConn) -> Vec<Post> { + use ::schema::posts::dsl::*; + posts.filter(published.eq(false)) + .limit(5) + .load::<Post>(&*conn) + .expect("Error loading posts") + } + + pub fn get(post_id: i32, conn: ::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 create(new_post: &NewPost, conn: ::DbConn) { + diesel::insert(new_post) + .into(posts::table) + .execute(&*conn) + .expect("Error saving post."); + } + + pub fn update(_updated_post: &Post, _conn: ::DbConn) { + //use ::schema::posts::dsl::*; + + //diesel::update(updated_post) + // .into(posts) + // .execute(&*conn) + // .expect("Error saving post."); + } +} |