use doido_core::Result;
use doido_jobs::{JobId, JobQueue};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PurgeBlob {
pub key: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnalyzeBlob {
pub key: String,
}
#[doido_jobs::job(queue = "storage_purge", max_retries = 5)]
pub async fn storage_purge(payload: PurgeBlob) -> Result<()> {
let conn = doido_model::pool::pool().clone();
let storage = crate::Storage::from_config(conn).await?;
storage.purge(&payload.key).await
}
#[doido_jobs::job(queue = "storage_analyze")]
pub async fn storage_analyze(payload: AnalyzeBlob) -> Result<()> {
let _ = payload;
Ok(())
}
pub async fn purge_later(queue: &dyn JobQueue, key: &str) -> Result<JobId> {
storage_purge_enqueue(
queue,
PurgeBlob {
key: key.to_string(),
},
)
.await
}
pub async fn analyze_later(queue: &dyn JobQueue, key: &str) -> Result<JobId> {
storage_analyze_enqueue(
queue,
AnalyzeBlob {
key: key.to_string(),
},
)
.await
}