about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/db.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/db.rs b/src/db.rs
index 4ac658a5ce64..3641bddb5aa4 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -87,6 +87,29 @@ impl Handler<GetPost> for DbExecutor {
     }
 }
 
+/// Message used to update the content of a post.
+#[derive(Deserialize)]
+pub struct UpdatePost {
+    post_id: i32,
+    post: String,
+}
+
+message!(UpdatePost, Result<Post>);
+
+impl Handler<UpdatePost> for DbExecutor {
+    type Result = Result<Post>;
+
+    fn handle(&mut self, msg: UpdatePost, _: &mut Self::Context) -> Self::Result {
+        use schema::posts::dsl::*;
+        let conn = self.0.get()?;
+        let updated = diesel::update(posts.find(msg.post_id))
+            .set(body.eq(msg.post))
+            .get_result(&conn)?;
+
+        Ok(updated)
+    }
+}
+
 /// Message used to create a new thread
 pub struct CreateThread {
     pub new_thread: NewThread,