]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/site.rs
af0e8153d08ec148277e23cf0feb4720cfa9c013
[lemmy.git] / crates / db_schema / src / impls / site.rs
1 use crate::{naive_now, newtypes::PersonId, source::site::*, traits::Crud};
2 use diesel::{dsl::*, result::Error, *};
3
4 impl Crud for Site {
5   type Form = SiteForm;
6   type IdType = i32;
7   fn read(conn: &PgConnection, _site_id: i32) -> Result<Self, Error> {
8     use crate::schema::site::dsl::*;
9     site.first::<Self>(conn)
10   }
11
12   fn create(conn: &PgConnection, new_site: &SiteForm) -> Result<Self, Error> {
13     use crate::schema::site::dsl::*;
14     insert_into(site).values(new_site).get_result::<Self>(conn)
15   }
16
17   fn update(conn: &PgConnection, site_id: i32, new_site: &SiteForm) -> Result<Self, Error> {
18     use crate::schema::site::dsl::*;
19     diesel::update(site.find(site_id))
20       .set(new_site)
21       .get_result::<Self>(conn)
22   }
23   fn delete(conn: &PgConnection, site_id: i32) -> Result<usize, Error> {
24     use crate::schema::site::dsl::*;
25     diesel::delete(site.find(site_id)).execute(conn)
26   }
27 }
28
29 impl Site {
30   pub fn transfer(conn: &PgConnection, new_creator_id: PersonId) -> Result<Site, Error> {
31     use crate::schema::site::dsl::*;
32     diesel::update(site.find(1))
33       .set((creator_id.eq(new_creator_id), updated.eq(naive_now())))
34       .get_result::<Self>(conn)
35   }
36
37   pub fn read_simple(conn: &PgConnection) -> Result<Self, Error> {
38     use crate::schema::site::dsl::*;
39     site.first::<Self>(conn)
40   }
41 }