]> Untitled Git - lemmy.git/blobdiff - crates/db_schema/src/impls/site.rs
implement language tags for site/community in db and api (#2434)
[lemmy.git] / crates / db_schema / src / impls / site.rs
index fb944f527ada47638b5148d589858fb07eeef74e..ef80b6f647a5fd2e0543d2d70d9ffe2c568bc7e8 100644 (file)
@@ -1,34 +1,45 @@
-use crate::{newtypes::DbUrl, source::site::*, traits::Crud};
+use crate::{
+  newtypes::{DbUrl, SiteId},
+  source::{actor_language::SiteLanguage, site::*},
+  traits::Crud,
+};
 use diesel::{dsl::*, result::Error, *};
 use url::Url;
 
 impl Crud for Site {
   type Form = SiteForm;
-  type IdType = i32;
-  fn read(conn: &mut PgConnection, _site_id: i32) -> Result<Self, Error> {
+  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> {
     use crate::schema::site::dsl::*;
-    insert_into(site).values(new_site).get_result::<Self>(conn)
+    let site_ = insert_into(site)
+      .values(new_site)
+      .get_result::<Self>(conn)?;
+
+    // initialize with all languages
+    SiteLanguage::update(conn, vec![], site_.id)?;
+    Ok(site_)
   }
 
-  fn update(conn: &mut PgConnection, site_id: i32, new_site: &SiteForm) -> Result<Self, Error> {
+  fn update(conn: &mut PgConnection, site_id: SiteId, new_site: &SiteForm) -> Result<Self, Error> {
     use crate::schema::site::dsl::*;
     diesel::update(site.find(site_id))
       .set(new_site)
       .get_result::<Self>(conn)
   }
-  fn delete(conn: &mut PgConnection, site_id: i32) -> Result<usize, Error> {
+
+  fn delete(conn: &mut PgConnection, site_id: SiteId) -> Result<usize, Error> {
     use crate::schema::site::dsl::*;
     diesel::delete(site.find(site_id)).execute(conn)
   }
 }
 
 impl Site {
-  pub fn read_local_site(conn: &mut PgConnection) -> Result<Self, Error> {
+  pub fn read_local(conn: &mut PgConnection) -> Result<Self, Error> {
     use crate::schema::site::dsl::*;
     site.order_by(id).first::<Self>(conn)
   }