]> Untitled Git - lemmy.git/blobdiff - crates/db_schema/src/impls/site.rs
Moving settings to Database. (#2492)
[lemmy.git] / crates / db_schema / src / impls / site.rs
index ef80b6f647a5fd2e0543d2d70d9ffe2c568bc7e8..bea9a21c51eb269e1f09bcc92b6fd1fb3c04a43c 100644 (file)
@@ -7,17 +7,22 @@ use diesel::{dsl::*, result::Error, *};
 use url::Url;
 
 impl Crud for Site {
-  type Form = SiteForm;
+  type InsertForm = SiteInsertForm;
+  type UpdateForm = SiteUpdateForm;
   type IdType = SiteId;
   fn read(conn: &mut PgConnection, _site_id: SiteId) -> Result<Self, Error> {
     use crate::schema::site::dsl::*;
     site.first::<Self>(conn)
   }
 
-  fn create(conn: &mut PgConnection, new_site: &SiteForm) -> Result<Self, Error> {
+  fn create(conn: &mut PgConnection, form: &Self::InsertForm) -> Result<Self, Error> {
     use crate::schema::site::dsl::*;
+
     let site_ = insert_into(site)
-      .values(new_site)
+      .values(form)
+      .on_conflict(actor_id)
+      .do_update()
+      .set(form)
       .get_result::<Self>(conn)?;
 
     // initialize with all languages
@@ -25,7 +30,11 @@ impl Crud for Site {
     Ok(site_)
   }
 
-  fn update(conn: &mut PgConnection, site_id: SiteId, new_site: &SiteForm) -> Result<Self, Error> {
+  fn update(
+    conn: &mut PgConnection,
+    site_id: SiteId,
+    new_site: &Self::UpdateForm,
+  ) -> Result<Self, Error> {
     use crate::schema::site::dsl::*;
     diesel::update(site.find(site_id))
       .set(new_site)
@@ -39,21 +48,6 @@ impl Crud for Site {
 }
 
 impl Site {
-  pub fn read_local(conn: &mut PgConnection) -> Result<Self, Error> {
-    use crate::schema::site::dsl::*;
-    site.order_by(id).first::<Self>(conn)
-  }
-
-  pub fn upsert(conn: &mut PgConnection, site_form: &SiteForm) -> Result<Site, Error> {
-    use crate::schema::site::dsl::*;
-    insert_into(site)
-      .values(site_form)
-      .on_conflict(actor_id)
-      .do_update()
-      .set(site_form)
-      .get_result::<Self>(conn)
-  }
-
   pub fn read_from_apub_id(conn: &mut PgConnection, object_id: Url) -> Result<Option<Self>, Error> {
     use crate::schema::site::dsl::*;
     let object_id: DbUrl = object_id.into();
@@ -66,6 +60,7 @@ impl Site {
     )
   }
 
+  // TODO this needs fixed
   pub fn read_remote_sites(conn: &mut PgConnection) -> Result<Vec<Self>, Error> {
     use crate::schema::site::dsl::*;
     site.order_by(id).offset(1).get_results::<Self>(conn)