]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/email_verification.rs
Add diesel_async, get rid of blocking function (#2510)
[lemmy.git] / crates / db_schema / src / impls / email_verification.rs
1 use crate::{
2   newtypes::LocalUserId,
3   schema::email_verification::dsl::*,
4   source::email_verification::*,
5   utils::{get_conn, DbPool},
6 };
7 use diesel::{dsl::*, insert_into, result::Error, ExpressionMethods, QueryDsl};
8 use diesel_async::RunQueryDsl;
9
10 impl EmailVerification {
11   pub async fn create(pool: &DbPool, form: &EmailVerificationForm) -> Result<Self, Error> {
12     let conn = &mut get_conn(pool).await?;
13     insert_into(email_verification)
14       .values(form)
15       .get_result::<Self>(conn)
16       .await
17   }
18
19   pub async fn read_for_token(pool: &DbPool, token: &str) -> Result<Self, Error> {
20     let conn = &mut get_conn(pool).await?;
21     email_verification
22       .filter(verification_token.eq(token))
23       .filter(published.gt(now - 7.days()))
24       .first::<Self>(conn)
25       .await
26   }
27   pub async fn delete_old_tokens_for_local_user(
28     pool: &DbPool,
29     local_user_id_: LocalUserId,
30   ) -> Result<usize, Error> {
31     let conn = &mut get_conn(pool).await?;
32     diesel::delete(email_verification.filter(local_user_id.eq(local_user_id_)))
33       .execute(conn)
34       .await
35   }
36 }