apalis_sqlite/queries/
register_worker.rs1use apalis_core::worker::context::WorkerContext;
2use sqlx::SqlitePool;
3
4use crate::Config;
5
6pub async fn register_worker(
8 pool: SqlitePool,
9 config: Config,
10 worker: WorkerContext,
11 storage_type: &str,
12) -> Result<(), sqlx::Error> {
13 let worker_id = worker.name().to_owned();
14 let queue = config.queue().to_string();
15 let layers = worker.get_service().to_owned();
16 let keep_alive = config.keep_alive().as_secs() as i64;
17 let res = sqlx::query_file!(
18 "queries/backend/register_worker.sql",
19 worker_id,
20 queue,
21 storage_type,
22 layers,
23 keep_alive,
24 )
25 .execute(&pool)
26 .await?;
27 if res.rows_affected() == 0 {
28 return Err(sqlx::Error::Io(std::io::Error::new(
29 std::io::ErrorKind::AlreadyExists,
30 "WORKER_ALREADY_EXISTS",
31 )));
32 }
33 Ok(())
34}