]> Untitled Git - lemmy.git/blobdiff - lemmy_db/src/source/site.rs
Merge remote-tracking branch 'origin/split-db-workspace' into move_views_to_diesel_split
[lemmy.git] / lemmy_db / src / source / site.rs
index 8775191e1b3bf2773c38db16375f8434d6457524..2510f46c9d4d4f76d7031ed573ab5c429348ef01 100644 (file)
@@ -1,71 +1,45 @@
-use crate::{naive_now, schema::site, Crud};
+use crate::Crud;
 use diesel::{dsl::*, result::Error, *};
-use serde::Serialize;
-
-#[derive(Queryable, Identifiable, PartialEq, Debug, Clone, Serialize)]
-#[table_name = "site"]
-pub struct Site {
-  pub id: i32,
-  pub name: String,
-  pub description: Option<String>,
-  pub creator_id: i32,
-  pub published: chrono::NaiveDateTime,
-  pub updated: Option<chrono::NaiveDateTime>,
-  pub enable_downvotes: bool,
-  pub open_registration: bool,
-  pub enable_nsfw: bool,
-  pub icon: Option<String>,
-  pub banner: Option<String>,
-}
-
-#[derive(Insertable, AsChangeset)]
-#[table_name = "site"]
-pub struct SiteForm {
-  pub name: String,
-  pub description: Option<String>,
-  pub creator_id: i32,
-  pub updated: Option<chrono::NaiveDateTime>,
-  pub enable_downvotes: bool,
-  pub open_registration: bool,
-  pub enable_nsfw: bool,
-  // when you want to null out a column, you have to send Some(None)), since sending None means you just don't want to update that column.
-  pub icon: Option<Option<String>>,
-  pub banner: Option<Option<String>>,
-}
+use lemmy_db_schema::{naive_now, source::site::*};
 
 impl Crud<SiteForm> for Site {
   fn read(conn: &PgConnection, _site_id: i32) -> Result<Self, Error> {
-    use crate::schema::site::dsl::*;
+    use lemmy_db_schema::schema::site::dsl::*;
     site.first::<Self>(conn)
   }
 
   fn create(conn: &PgConnection, new_site: &SiteForm) -> Result<Self, Error> {
-    use crate::schema::site::dsl::*;
+    use lemmy_db_schema::schema::site::dsl::*;
     insert_into(site).values(new_site).get_result::<Self>(conn)
   }
 
   fn update(conn: &PgConnection, site_id: i32, new_site: &SiteForm) -> Result<Self, Error> {
-    use crate::schema::site::dsl::*;
+    use lemmy_db_schema::schema::site::dsl::*;
     diesel::update(site.find(site_id))
       .set(new_site)
       .get_result::<Self>(conn)
   }
   fn delete(conn: &PgConnection, site_id: i32) -> Result<usize, Error> {
-    use crate::schema::site::dsl::*;
+    use lemmy_db_schema::schema::site::dsl::*;
     diesel::delete(site.find(site_id)).execute(conn)
   }
 }
 
-impl Site {
-  pub fn transfer(conn: &PgConnection, new_creator_id: i32) -> Result<Self, Error> {
-    use crate::schema::site::dsl::*;
+pub trait Site_ {
+  fn transfer(conn: &PgConnection, new_creator_id: i32) -> Result<Site, Error>;
+  fn read_simple(conn: &PgConnection) -> Result<Site, Error>;
+}
+
+impl Site_ for Site {
+  fn transfer(conn: &PgConnection, new_creator_id: i32) -> Result<Site, Error> {
+    use lemmy_db_schema::schema::site::dsl::*;
     diesel::update(site.find(1))
       .set((creator_id.eq(new_creator_id), updated.eq(naive_now())))
       .get_result::<Self>(conn)
   }
 
-  pub fn read_simple(conn: &PgConnection) -> Result<Self, Error> {
-    use crate::schema::site::dsl::*;
+  fn read_simple(conn: &PgConnection) -> Result<Self, Error> {
+    use lemmy_db_schema::schema::site::dsl::*;
     site.first::<Self>(conn)
   }
 }