feat: add auth
This commit is contained in:
53
src/jobs.rs
Normal file
53
src/jobs.rs
Normal file
@@ -0,0 +1,53 @@
|
||||
use std::{error::Error, time::Duration};
|
||||
|
||||
use quartz::{Job, Scheduler, Trigger};
|
||||
use sqlx::query;
|
||||
use tokio::runtime::Handle;
|
||||
|
||||
use crate::{auth, db};
|
||||
pub fn init_scheduler(rt: Handle) -> Scheduler {
|
||||
let scheduler = Scheduler::new();
|
||||
|
||||
let trigger_every_5min =
|
||||
Trigger::with_identity("5min_trigger", "default_group").every(Duration::from_mins(5));
|
||||
|
||||
let trigger_every_3min =
|
||||
Trigger::with_identity("3min_trigger", "default_group").every(Duration::from_mins(3));
|
||||
|
||||
let rt_cleanup = rt.clone();
|
||||
let cleanup_tokens_job = Job::with_identity("cleanup_tokens_job", "default_group", move || {
|
||||
let rt = rt_cleanup.clone();
|
||||
rt.spawn(async move {
|
||||
let _ = cleanup_old_tokens().await;
|
||||
});
|
||||
});
|
||||
|
||||
let rt_refresh = rt.clone();
|
||||
let refresh_access_token_job =
|
||||
Job::with_identity("refresh_access_token_job", "default_group", move || {
|
||||
let rt = rt_refresh.clone();
|
||||
rt.spawn(async move {
|
||||
let _ = refresh_access_token().await;
|
||||
});
|
||||
});
|
||||
|
||||
scheduler.schedule_job(cleanup_tokens_job, trigger_every_5min);
|
||||
scheduler.schedule_job(refresh_access_token_job, trigger_every_3min);
|
||||
|
||||
scheduler
|
||||
}
|
||||
|
||||
pub async fn cleanup_old_tokens() -> Result<(), Box<dyn Error>> {
|
||||
let pool = db::get_pool().await?;
|
||||
let now = chrono::Utc::now();
|
||||
let now = now.to_rfc3339();
|
||||
query!("DELETE FROM tokens WHERE expires_at < ?", now)
|
||||
.execute(&pool)
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn refresh_access_token() -> Result<(), Box<dyn Error>> {
|
||||
auth::create_new_access_token().await?;
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user