]> Untitled Git - lemmy.git/blobdiff - lemmy_db/src/user.rs
Merge branch 'main' into move_views_to_diesel
[lemmy.git] / lemmy_db / src / user.rs
index b2cb0e17e7cac2cd760c7aa9d702e5e443381c41..41d3ed18b74a01d4f10a2a1013c917848695ed2c 100644 (file)
@@ -2,6 +2,7 @@ use crate::{
   is_email_regex,
   naive_now,
   schema::{user_, user_::dsl::*},
+  ApubObject,
   Crud,
 };
 use bcrypt::{hash, DEFAULT_COST};
@@ -151,6 +152,25 @@ impl Crud<UserForm> for User_ {
   }
 }
 
+impl ApubObject<UserForm> for User_ {
+  fn read_from_apub_id(conn: &PgConnection, object_id: &str) -> Result<Self, Error> {
+    use crate::schema::user_::dsl::*;
+    user_
+      .filter(deleted.eq(false))
+      .filter(actor_id.eq(object_id))
+      .first::<Self>(conn)
+  }
+
+  fn upsert(conn: &PgConnection, user_form: &UserForm) -> Result<User_, Error> {
+    insert_into(user_)
+      .values(user_form)
+      .on_conflict(actor_id)
+      .do_update()
+      .set(user_form)
+      .get_result::<Self>(conn)
+  }
+}
+
 impl User_ {
   pub fn register(conn: &PgConnection, form: &UserForm) -> Result<Self, Error> {
     let mut edited_user = form.clone();
@@ -197,14 +217,6 @@ impl User_ {
       .get_result::<Self>(conn)
   }
 
-  pub fn read_from_actor_id(conn: &PgConnection, object_id: &str) -> Result<Self, Error> {
-    use crate::schema::user_::dsl::*;
-    user_
-      .filter(deleted.eq(false))
-      .filter(actor_id.eq(object_id))
-      .first::<Self>(conn)
-  }
-
   pub fn find_by_email_or_username(
     conn: &PgConnection,
     username_or_email: &str,
@@ -241,12 +253,9 @@ impl User_ {
     )
   }
 
-  pub fn upsert(conn: &PgConnection, user_form: &UserForm) -> Result<User_, Error> {
-    insert_into(user_)
-      .values(user_form)
-      .on_conflict(actor_id)
-      .do_update()
-      .set(user_form)
+  pub fn mark_as_updated(conn: &PgConnection, user_id: i32) -> Result<User_, Error> {
+    diesel::update(user_.find(user_id))
+      .set((last_refreshed_at.eq(naive_now()),))
       .get_result::<Self>(conn)
   }