]> Untitled Git - lemmy.git/blobdiff - crates/db_schema/src/impls/email_verification.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / db_schema / src / impls / email_verification.rs
index c6140f4bc43179f53b59074909e3cc2bc7f0a673..59c5b9536aed27d1d25fe7526eb794d3825917a3 100644 (file)
@@ -1,34 +1,47 @@
-use crate::{newtypes::LocalUserId, source::email_verification::*};
+use crate::{
+  newtypes::LocalUserId,
+  schema::email_verification::dsl::{
+    email_verification,
+    local_user_id,
+    published,
+    verification_token,
+  },
+  source::email_verification::{EmailVerification, EmailVerificationForm},
+  utils::{get_conn, DbPool},
+};
 use diesel::{
-  dsl::*,
+  dsl::{now, IntervalDsl},
   insert_into,
   result::Error,
   ExpressionMethods,
-  PgConnection,
   QueryDsl,
-  RunQueryDsl,
 };
+use diesel_async::RunQueryDsl;
 
 impl EmailVerification {
-  pub fn create(conn: &mut PgConnection, form: &EmailVerificationForm) -> Result<Self, Error> {
-    use crate::schema::email_verification::dsl::*;
+  pub async fn create(pool: &mut DbPool<'_>, form: &EmailVerificationForm) -> Result<Self, Error> {
+    let conn = &mut get_conn(pool).await?;
     insert_into(email_verification)
       .values(form)
       .get_result::<Self>(conn)
+      .await
   }
 
-  pub fn read_for_token(conn: &mut PgConnection, token: &str) -> Result<Self, Error> {
-    use crate::schema::email_verification::dsl::*;
+  pub async fn read_for_token(pool: &mut DbPool<'_>, token: &str) -> Result<Self, Error> {
+    let conn = &mut get_conn(pool).await?;
     email_verification
       .filter(verification_token.eq(token))
       .filter(published.gt(now - 7.days()))
       .first::<Self>(conn)
+      .await
   }
-  pub fn delete_old_tokens_for_local_user(
-    conn: &mut PgConnection,
+  pub async fn delete_old_tokens_for_local_user(
+    pool: &mut DbPool<'_>,
     local_user_id_: LocalUserId,
   ) -> Result<usize, Error> {
-    use crate::schema::email_verification::dsl::*;
-    diesel::delete(email_verification.filter(local_user_id.eq(local_user_id_))).execute(conn)
+    let conn = &mut get_conn(pool).await?;
+    diesel::delete(email_verification.filter(local_user_id.eq(local_user_id_)))
+      .execute(conn)
+      .await
   }
 }