]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/local_site.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / db_schema / src / impls / local_site.rs
1 use crate::{
2   schema::local_site::dsl::local_site,
3   source::local_site::{LocalSite, LocalSiteInsertForm, LocalSiteUpdateForm},
4   utils::{get_conn, DbPool},
5 };
6 use diesel::{dsl::insert_into, result::Error};
7 use diesel_async::RunQueryDsl;
8
9 impl LocalSite {
10   pub async fn create(pool: &mut DbPool<'_>, form: &LocalSiteInsertForm) -> Result<Self, Error> {
11     let conn = &mut get_conn(pool).await?;
12     insert_into(local_site)
13       .values(form)
14       .get_result::<Self>(conn)
15       .await
16   }
17   pub async fn read(pool: &mut DbPool<'_>) -> Result<Self, Error> {
18     let conn = &mut get_conn(pool).await?;
19     local_site.first::<Self>(conn).await
20   }
21   pub async fn update(pool: &mut DbPool<'_>, form: &LocalSiteUpdateForm) -> Result<Self, Error> {
22     let conn = &mut get_conn(pool).await?;
23     diesel::update(local_site)
24       .set(form)
25       .get_result::<Self>(conn)
26       .await
27   }
28   pub async fn delete(pool: &mut DbPool<'_>) -> Result<usize, Error> {
29     let conn = &mut get_conn(pool).await?;
30     diesel::delete(local_site).execute(conn).await
31   }
32 }