]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/registration_application.rs
8004abc6c3f5e883c60d4efe020d74ef70c68dcb
[lemmy.git] / crates / db_schema / src / impls / registration_application.rs
1 use crate::{newtypes::LocalUserId, source::registration_application::*, traits::Crud};
2 use diesel::{insert_into, result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
3
4 impl Crud for RegistrationApplication {
5   type InsertForm = RegistrationApplicationInsertForm;
6   type UpdateForm = RegistrationApplicationUpdateForm;
7   type IdType = i32;
8   fn create(conn: &mut PgConnection, form: &Self::InsertForm) -> Result<Self, Error> {
9     use crate::schema::registration_application::dsl::*;
10     insert_into(registration_application)
11       .values(form)
12       .get_result::<Self>(conn)
13   }
14
15   fn read(conn: &mut PgConnection, id_: Self::IdType) -> Result<Self, Error> {
16     use crate::schema::registration_application::dsl::*;
17     registration_application.find(id_).first::<Self>(conn)
18   }
19
20   fn update(
21     conn: &mut PgConnection,
22     id_: Self::IdType,
23     form: &Self::UpdateForm,
24   ) -> Result<Self, Error> {
25     use crate::schema::registration_application::dsl::*;
26     diesel::update(registration_application.find(id_))
27       .set(form)
28       .get_result::<Self>(conn)
29   }
30
31   fn delete(conn: &mut PgConnection, id_: Self::IdType) -> Result<usize, Error> {
32     use crate::schema::registration_application::dsl::*;
33     diesel::delete(registration_application.find(id_)).execute(conn)
34   }
35 }
36
37 impl RegistrationApplication {
38   pub fn find_by_local_user_id(
39     conn: &mut PgConnection,
40     local_user_id_: LocalUserId,
41   ) -> Result<Self, Error> {
42     use crate::schema::registration_application::dsl::*;
43     registration_application
44       .filter(local_user_id.eq(local_user_id_))
45       .first::<Self>(conn)
46   }
47 }