Skip to main content

apalis_postgres/queries/
fetch_by_id.rs

1use 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}