Skip to main content

apalis_sqlite/queries/
ack_task.rs

1use apalis_core::backend::TaskResult;
2use sqlx::Executor;
3
4/// Represents the result of a `SqliteTask` execution
5pub type AckPayload = TaskResult<serde_json::Value>;
6
7/// Ack multiple tasks, given a worker
8pub async fn ack_tasks<'a, E>(
9    executor: E,
10    messages: &[&AckPayload],
11    worker_id: &str,
12) -> Result<u64, sqlx::Error>
13where
14    E: Executor<'a, Database = sqlx::Sqlite>,
15{
16    let payload_json =
17        serde_json::to_string(&messages).map_err(|e| sqlx::Error::Encode(Box::new(e)))?;
18
19    let result = sqlx::query_file!("queries/task/ack.sql", payload_json, worker_id)
20        .execute(executor)
21        .await?;
22
23    Ok(result.rows_affected())
24}