use crate::NextStep;
use std::{error::Error as StdError, result::Result as StdResult};
#[derive(Debug, displaydoc::Display, thiserror::Error)]
pub enum Error {
AddTask(#[source] sqlx::Error),
SerializeStep(#[source] serde_json::Error, String),
DeserializeStep(#[source] serde_json::Error, String),
UnlockStaleTasks(#[source] sqlx::Error),
ListenerConnect(#[source] sqlx::Error),
ListenerListen(#[source] sqlx::Error),
UnreachableWorkerSemaphoreClosed(#[source] tokio::sync::AcquireError),
Db(#[source] sqlx::Error, String),
}
pub type Result<T> = StdResult<T, Error>;
pub type StepError = Box<dyn StdError + 'static + Send + Sync>;
pub type StepResult<T> = StdResult<NextStep<T>, StepError>;