diff options
Diffstat (limited to 'server/src/db/activity.rs')
-rw-r--r-- | server/src/db/activity.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/server/src/db/activity.rs b/server/src/db/activity.rs index abe172e1..70f9d6b6 100644 --- a/server/src/db/activity.rs +++ b/server/src/db/activity.rs @@ -1,6 +1,5 @@ use super::*; use crate::schema::activity; -use crate::schema::activity::dsl::*; use serde_json::Value; #[derive(Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)] @@ -25,14 +24,17 @@ pub struct ActivityForm { impl Crud<ActivityForm> for Activity { fn read(conn: &PgConnection, activity_id: i32) -> Result<Self, Error> { + use crate::schema::activity::dsl::*; activity.find(activity_id).first::<Self>(conn) } fn delete(conn: &PgConnection, activity_id: i32) -> Result<usize, Error> { + use crate::schema::activity::dsl::*; diesel::delete(activity.find(activity_id)).execute(conn) } fn create(conn: &PgConnection, new_activity: &ActivityForm) -> Result<Self, Error> { + use crate::schema::activity::dsl::*; insert_into(activity) .values(new_activity) .get_result::<Self>(conn) @@ -43,12 +45,31 @@ impl Crud<ActivityForm> for Activity { activity_id: i32, new_activity: &ActivityForm, ) -> Result<Self, Error> { + use crate::schema::activity::dsl::*; diesel::update(activity.find(activity_id)) .set(new_activity) .get_result::<Self>(conn) } } +pub fn insert_activity<T>( + conn: &PgConnection, + user_id: i32, + data: &T, + local: bool, +) -> Result<Activity, failure::Error> +where + T: Serialize, +{ + let activity_form = ActivityForm { + user_id, + data: serde_json::to_value(&data)?, + local, + updated: None, + }; + Ok(Activity::create(&conn, &activity_form)?) +} + #[cfg(test)] mod tests { use super::super::user::*; |