]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/registration_application.rs
add enable_federated_downvotes site option
[lemmy.git] / crates / db_schema / src / impls / registration_application.rs
1 use crate::{
2   newtypes::LocalUserId,
3   schema::registration_application::dsl::{local_user_id, registration_application},
4   source::registration_application::{
5     RegistrationApplication,
6     RegistrationApplicationInsertForm,
7     RegistrationApplicationUpdateForm,
8   },
9   traits::Crud,
10   utils::{get_conn, DbPool},
11 };
12 use diesel::{insert_into, result::Error, ExpressionMethods, QueryDsl};
13 use diesel_async::RunQueryDsl;
14
15 #[async_trait]
16 impl Crud for RegistrationApplication {
17   type InsertForm = RegistrationApplicationInsertForm;
18   type UpdateForm = RegistrationApplicationUpdateForm;
19   type IdType = i32;
20
21   async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> {
22     let conn = &mut get_conn(pool).await?;
23     insert_into(registration_application)
24       .values(form)
25       .get_result::<Self>(conn)
26       .await
27   }
28
29   async fn update(
30     pool: &mut DbPool<'_>,
31     id_: Self::IdType,
32     form: &Self::UpdateForm,
33   ) -> Result<Self, Error> {
34     let conn = &mut get_conn(pool).await?;
35     diesel::update(registration_application.find(id_))
36       .set(form)
37       .get_result::<Self>(conn)
38       .await
39   }
40 }
41
42 impl RegistrationApplication {
43   pub async fn find_by_local_user_id(
44     pool: &mut DbPool<'_>,
45     local_user_id_: LocalUserId,
46   ) -> Result<Self, Error> {
47     let conn = &mut get_conn(pool).await?;
48     registration_application
49       .filter(local_user_id.eq(local_user_id_))
50       .first::<Self>(conn)
51       .await
52   }
53 }