X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_schema%2Fsrc%2Fimpls%2Fsite.rs;h=ef80b6f647a5fd2e0543d2d70d9ffe2c568bc7e8;hb=2ef0f8f5f8c60d8c7632779ca16bac69daab1266;hp=fb944f527ada47638b5148d589858fb07eeef74e;hpb=7bb941e5461f68b810a18ea40cb7a405ded69cc9;p=lemmy.git diff --git a/crates/db_schema/src/impls/site.rs b/crates/db_schema/src/impls/site.rs index fb944f52..ef80b6f6 100644 --- a/crates/db_schema/src/impls/site.rs +++ b/crates/db_schema/src/impls/site.rs @@ -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 { + type IdType = SiteId; + fn read(conn: &mut PgConnection, _site_id: SiteId) -> Result { use crate::schema::site::dsl::*; site.first::(conn) } fn create(conn: &mut PgConnection, new_site: &SiteForm) -> Result { use crate::schema::site::dsl::*; - insert_into(site).values(new_site).get_result::(conn) + let site_ = insert_into(site) + .values(new_site) + .get_result::(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 { + fn update(conn: &mut PgConnection, site_id: SiteId, new_site: &SiteForm) -> Result { use crate::schema::site::dsl::*; diesel::update(site.find(site_id)) .set(new_site) .get_result::(conn) } - fn delete(conn: &mut PgConnection, site_id: i32) -> Result { + + fn delete(conn: &mut PgConnection, site_id: SiteId) -> Result { use crate::schema::site::dsl::*; diesel::delete(site.find(site_id)).execute(conn) } } impl Site { - pub fn read_local_site(conn: &mut PgConnection) -> Result { + pub fn read_local(conn: &mut PgConnection) -> Result { use crate::schema::site::dsl::*; site.order_by(id).first::(conn) }