]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/email_verification.rs
First pass at invite-only migration. (#1949)
[lemmy.git] / crates / db_schema / src / impls / email_verification.rs
1 use crate::{newtypes::LocalUserId, source::email_verification::*, traits::Crud};
2 use diesel::{
3   dsl::*,
4   insert_into,
5   result::Error,
6   ExpressionMethods,
7   PgConnection,
8   QueryDsl,
9   RunQueryDsl,
10 };
11
12 impl Crud for EmailVerification {
13   type Form = EmailVerificationForm;
14   type IdType = i32;
15   fn create(conn: &PgConnection, form: &EmailVerificationForm) -> Result<Self, Error> {
16     use crate::schema::email_verification::dsl::*;
17     insert_into(email_verification)
18       .values(form)
19       .get_result::<Self>(conn)
20   }
21
22   fn read(conn: &PgConnection, id_: i32) -> Result<Self, Error> {
23     use crate::schema::email_verification::dsl::*;
24     email_verification.find(id_).first::<Self>(conn)
25   }
26
27   fn update(conn: &PgConnection, id_: i32, form: &EmailVerificationForm) -> Result<Self, Error> {
28     use crate::schema::email_verification::dsl::*;
29     diesel::update(email_verification.find(id_))
30       .set(form)
31       .get_result::<Self>(conn)
32   }
33
34   fn delete(conn: &PgConnection, id_: i32) -> Result<usize, Error> {
35     use crate::schema::email_verification::dsl::*;
36     diesel::delete(email_verification.find(id_)).execute(conn)
37   }
38 }
39
40 impl EmailVerification {
41   pub fn read_for_token(conn: &PgConnection, token: &str) -> Result<Self, Error> {
42     use crate::schema::email_verification::dsl::*;
43     email_verification
44       .filter(verification_token.eq(token))
45       .filter(published.gt(now - 7.days()))
46       .first::<Self>(conn)
47   }
48   pub fn delete_old_tokens_for_local_user(
49     conn: &PgConnection,
50     local_user_id_: LocalUserId,
51   ) -> Result<usize, Error> {
52     use crate::schema::email_verification::dsl::*;
53     diesel::delete(email_verification.filter(local_user_id.eq(local_user_id_))).execute(conn)
54   }
55 }