]> Untitled Git - lemmy.git/blobdiff - src/scheduled_tasks.rs
feat: re-added captcha checks (#3289)
[lemmy.git] / src / scheduled_tasks.rs
index c67dac0a41f187b977b337eca83c7fc966cb0a6c..4d3c936e88b4cd49eac90c4473645be350c4ac9d 100644 (file)
@@ -13,7 +13,7 @@ use diesel::{
 use diesel::{sql_query, PgConnection, RunQueryDsl};
 use lemmy_api_common::context::LemmyContext;
 use lemmy_db_schema::{
-  schema::{activity, comment, community_person_ban, instance, person, post},
+  schema::{activity, captcha_answer, comment, community_person_ban, instance, person, post},
   source::instance::{Instance, InstanceForm},
   utils::{naive_now, DELETED_REPLACEMENT_TEXT},
 };
@@ -49,6 +49,13 @@ pub fn setup(
     update_hot_ranks(&mut conn, true);
   });
 
+  // Delete any captcha answers older than ten minutes, every ten minutes
+  let url = db_url.clone();
+  scheduler.every(CTimeUnits::minutes(10)).run(move || {
+    let mut conn = PgConnection::establish(&url).expect("could not establish connection");
+    delete_expired_captcha_answers(&mut conn);
+  });
+
   // Clear old activities every week
   let url = db_url.clone();
   scheduler.every(CTimeUnits::weeks(1)).run(move || {
@@ -181,6 +188,21 @@ fn process_hot_ranks_in_batches(
   );
 }
 
+fn delete_expired_captcha_answers(conn: &mut PgConnection) {
+  match diesel::delete(
+    captcha_answer::table.filter(captcha_answer::published.lt(now - IntervalDsl::minutes(10))),
+  )
+  .execute(conn)
+  {
+    Ok(_) => {
+      info!("Done.");
+    }
+    Err(e) => {
+      error!("Failed to clear old captcha answers: {}", e)
+    }
+  }
+}
+
 /// Clear old activities (this table gets very large)
 fn clear_old_activities(conn: &mut PgConnection) {
   info!("Clearing old activities...");