]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/registration_application.rs
First pass at invite-only migration. (#1949)
[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 Form = RegistrationApplicationForm;
6   type IdType = i32;
7   fn create(conn: &PgConnection, form: &Self::Form) -> Result<Self, Error> {
8     use crate::schema::registration_application::dsl::*;
9     insert_into(registration_application)
10       .values(form)
11       .get_result::<Self>(conn)
12   }
13
14   fn read(conn: &PgConnection, id_: Self::IdType) -> Result<Self, Error> {
15     use crate::schema::registration_application::dsl::*;
16     registration_application.find(id_).first::<Self>(conn)
17   }
18
19   fn update(conn: &PgConnection, id_: Self::IdType, form: &Self::Form) -> Result<Self, Error> {
20     use crate::schema::registration_application::dsl::*;
21     diesel::update(registration_application.find(id_))
22       .set(form)
23       .get_result::<Self>(conn)
24   }
25
26   fn delete(conn: &PgConnection, id_: Self::IdType) -> Result<usize, Error> {
27     use crate::schema::registration_application::dsl::*;
28     diesel::delete(registration_application.find(id_)).execute(conn)
29   }
30 }
31
32 impl RegistrationApplication {
33   pub fn find_by_local_user_id(
34     conn: &PgConnection,
35     local_user_id_: LocalUserId,
36   ) -> Result<Self, Error> {
37     use crate::schema::registration_application::dsl::*;
38     registration_application
39       .filter(local_user_id.eq(local_user_id_))
40       .first::<Self>(conn)
41   }
42 }