about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/db.rs25
-rw-r--r--src/models.rs7
2 files changed, 30 insertions, 2 deletions
diff --git a/src/db.rs b/src/db.rs
index 8c828d9c60c8..baf404af2a2f 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -75,7 +75,28 @@ impl Handler<CreateThread> for DbExecutor {
         let conn = self.0.get()?;
 
         Ok(diesel::insert_into(threads::table)
-            .values(&msg.0)
-            .get_result(&conn)?)
+           .values(&msg.0)
+           .get_result(&conn)?)
+    }
+}
+
+/// Message used to create a new reply
+pub struct CreatePost(pub NewPost);
+
+impl Message for CreatePost {
+    type Result = Result<Post>;
+}
+
+impl Handler<CreatePost> for DbExecutor {
+    type Result = <CreatePost as Message>::Result;
+
+    fn handle(&mut self, msg: CreatePost, _: &mut Self::Context) -> Self::Result {
+        use schema::posts;
+
+        let conn = self.0.get()?;
+
+        Ok(diesel::insert_into(posts::table)
+           .values(&msg.0)
+           .get_result(&conn)?)
     }
 }
diff --git a/src/models.rs b/src/models.rs
index d85a54e03090..28b1caa7cf32 100644
--- a/src/models.rs
+++ b/src/models.rs
@@ -24,3 +24,10 @@ pub struct NewThread {
     pub title: String,
     pub body: String,
 }
+
+#[derive(Deserialize, Insertable)]
+#[table_name="posts"]
+pub struct NewPost {
+    pub thread_id: i32,
+    pub body: String,
+}