]> Untitled Git - lemmy.git/blobdiff - crates/db_schema/src/impls/person.rs
Moving settings to Database. (#2492)
[lemmy.git] / crates / db_schema / src / impls / person.rs
index 9c5dc5b65ca4d6597538ebb9bf7db6b6d00e6d84..22a26440d593c69cf4aae9c7008d97c2ee52fc92 100644 (file)
@@ -1,7 +1,7 @@
 use crate::{
   newtypes::{DbUrl, PersonId},
   schema::person::dsl::*,
-  source::person::{Person, PersonForm},
+  source::person::{Person, PersonInsertForm, PersonUpdateForm},
   traits::{ApubActor, Crud},
   utils::{functions::lower, naive_now},
 };
@@ -37,6 +37,7 @@ mod safe_type {
     admin,
     bot_account,
     ban_expires,
+    instance_id,
   );
 
   impl ToSafe for Person {
@@ -61,13 +62,15 @@ mod safe_type {
         admin,
         bot_account,
         ban_expires,
+        instance_id,
       )
     }
   }
 }
 
 impl Crud for Person {
-  type Form = PersonForm;
+  type InsertForm = PersonInsertForm;
+  type UpdateForm = PersonUpdateForm;
   type IdType = PersonId;
   fn read(conn: &mut PgConnection, person_id: PersonId) -> Result<Self, Error> {
     person
@@ -78,13 +81,18 @@ impl Crud for Person {
   fn delete(conn: &mut PgConnection, person_id: PersonId) -> Result<usize, Error> {
     diesel::delete(person.find(person_id)).execute(conn)
   }
-  fn create(conn: &mut PgConnection, form: &PersonForm) -> Result<Self, Error> {
-    insert_into(person).values(form).get_result::<Self>(conn)
+  fn create(conn: &mut PgConnection, form: &PersonInsertForm) -> Result<Self, Error> {
+    insert_into(person)
+      .values(form)
+      .on_conflict(actor_id)
+      .do_update()
+      .set(form)
+      .get_result::<Self>(conn)
   }
   fn update(
     conn: &mut PgConnection,
     person_id: PersonId,
-    form: &PersonForm,
+    form: &PersonUpdateForm,
   ) -> Result<Self, Error> {
     diesel::update(person.find(person_id))
       .set(form)
@@ -93,33 +101,6 @@ impl Crud for Person {
 }
 
 impl Person {
-  pub fn ban_person(
-    conn: &mut PgConnection,
-    person_id: PersonId,
-    ban: bool,
-    expires: Option<chrono::NaiveDateTime>,
-  ) -> Result<Self, Error> {
-    diesel::update(person.find(person_id))
-      .set((banned.eq(ban), ban_expires.eq(expires)))
-      .get_result::<Self>(conn)
-  }
-
-  pub fn add_admin(
-    conn: &mut PgConnection,
-    person_id: PersonId,
-    added: bool,
-  ) -> Result<Self, Error> {
-    diesel::update(person.find(person_id))
-      .set(admin.eq(added))
-      .get_result::<Self>(conn)
-  }
-
-  pub fn mark_as_updated(conn: &mut PgConnection, person_id: PersonId) -> Result<Person, Error> {
-    diesel::update(person.find(person_id))
-      .set((last_refreshed_at.eq(naive_now()),))
-      .get_result::<Self>(conn)
-  }
-
   pub fn delete_account(conn: &mut PgConnection, person_id: PersonId) -> Result<Person, Error> {
     use crate::schema::local_user;
 
@@ -143,44 +124,6 @@ impl Person {
       ))
       .get_result::<Self>(conn)
   }
-
-  pub fn upsert(conn: &mut PgConnection, person_form: &PersonForm) -> Result<Person, Error> {
-    insert_into(person)
-      .values(person_form)
-      .on_conflict(actor_id)
-      .do_update()
-      .set(person_form)
-      .get_result::<Self>(conn)
-  }
-
-  pub fn update_deleted(
-    conn: &mut PgConnection,
-    person_id: PersonId,
-    new_deleted: bool,
-  ) -> Result<Person, Error> {
-    use crate::schema::person::dsl::*;
-    diesel::update(person.find(person_id))
-      .set(deleted.eq(new_deleted))
-      .get_result::<Self>(conn)
-  }
-
-  pub fn leave_admin(conn: &mut PgConnection, person_id: PersonId) -> Result<Self, Error> {
-    diesel::update(person.find(person_id))
-      .set(admin.eq(false))
-      .get_result::<Self>(conn)
-  }
-
-  pub fn remove_avatar_and_banner(
-    conn: &mut PgConnection,
-    person_id: PersonId,
-  ) -> Result<Self, Error> {
-    diesel::update(person.find(person_id))
-      .set((
-        avatar.eq::<Option<String>>(None),
-        banner.eq::<Option<String>>(None),
-      ))
-      .get_result::<Self>(conn)
-  }
 }
 
 pub fn is_banned(banned_: bool, expires: Option<chrono::NaiveDateTime>) -> bool {
@@ -234,7 +177,11 @@ impl ApubActor for Person {
 
 #[cfg(test)]
 mod tests {
-  use crate::{source::person::*, traits::Crud, utils::establish_unpooled_connection};
+  use crate::{
+    source::{instance::Instance, person::*},
+    traits::Crud,
+    utils::establish_unpooled_connection,
+  };
   use serial_test::serial;
 
   #[test]
@@ -242,11 +189,13 @@ mod tests {
   fn test_crud() {
     let conn = &mut establish_unpooled_connection();
 
-    let new_person = PersonForm {
-      name: "holly".into(),
-      public_key: Some("nada".to_owned()),
-      ..PersonForm::default()
-    };
+    let inserted_instance = Instance::create(conn, "my_domain.tld").unwrap();
+
+    let new_person = PersonInsertForm::builder()
+      .name("holly".into())
+      .public_key("nada".to_owned())
+      .instance_id(inserted_instance.id)
+      .build();
 
     let inserted_person = Person::create(conn, &new_person).unwrap();
 
@@ -272,11 +221,18 @@ mod tests {
       shared_inbox_url: None,
       matrix_user_id: None,
       ban_expires: None,
+      instance_id: inserted_instance.id,
     };
 
     let read_person = Person::read(conn, inserted_person.id).unwrap();
-    let updated_person = Person::update(conn, inserted_person.id, &new_person).unwrap();
+
+    let update_person_form = PersonUpdateForm::builder()
+      .actor_id(Some(inserted_person.actor_id.to_owned()))
+      .build();
+    let updated_person = Person::update(conn, inserted_person.id, &update_person_form).unwrap();
+
     let num_deleted = Person::delete(conn, inserted_person.id).unwrap();
+    Instance::delete(conn, inserted_instance.id).unwrap();
 
     assert_eq!(expected_person, read_person);
     assert_eq!(expected_person, inserted_person);