use anyhow::Result; use celery::prelude::*; use diesel::prelude::*; use uuidv7::Uuid; use crate::{db, worker}; async fn do_task() -> Result<()> { let db_conn = &mut db::POOL.get()?; let repo_ids = db::schema::repositories::table .select(db::schema::repositories::id) .load::(db_conn)?; let worker_conn = worker::POOL.get().await.get().await?; for id in repo_ids { worker_conn .send_task(worker::get_repo::get_repo::new(id)) .await?; } Ok(()) } #[celery::task] pub async fn update_repos() -> TaskResult<()> { if let Err(e) = do_task().await { return Err(TaskError::UnexpectedError(format!("{:?}", e))); } Ok(()) }