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