apalis_postgres/queries/
fetch_by_id.rs1use apalis_core::backend::{Backend, FetchById};
2
3use crate::{PgTask, PgTaskId, PostgresStorage, error::Error, from_row::PgTaskRow};
4
5impl<Args> FetchById for PostgresStorage<Args>
6where
7 Self: Backend<Error = Error, Task = PgTask>,
8 Args: 'static,
9{
10 fn fetch_by_id(
11 &mut self,
12 id: &PgTaskId,
13 ) -> impl Future<Output = Result<Option<Self::Task>, Self::Error>> + Send {
14 let pool = self.persistence.pool.clone();
15 let id = id.to_string();
16 async move {
17 let task = sqlx::query_file_as!(PgTaskRow, "queries/task/find_by_id.sql", id)
18 .fetch_optional(&pool)
19 .await?
20 .map(|r: PgTaskRow| r.try_into())
21 .transpose()?;
22 Ok(task)
23 }
24 }
25}