Skip to main content

apalis_pgmq/
errors.rs

1//! Custom errors types for apalis-pgmq
2use apalis_core::error::BoxDynError;
3use thiserror::Error;
4use url::ParseError;
5
6#[derive(Error, Debug)]
7pub enum PgmqError {
8    /// a codec parsing error
9    #[error("codec parsing error {0}")]
10    ParsingError(#[from] BoxDynError),
11
12    /// a url parsing error
13    #[error("url parsing error {0}")]
14    UrlParsingError(#[from] ParseError),
15
16    /// a database error
17    #[error("database error {0}")]
18    DatabaseError(#[from] sqlx::Error),
19
20    /// a queue name error
21    /// queue names must be alphanumeric and start with a letter
22    #[error("invalid queue name: '{name}'")]
23    InvalidQueueName { name: String },
24
25    /// a general error for installation operations
26    #[error("installation error: {0}")]
27    InstallationError(String),
28}
29
30impl From<Box<dyn std::error::Error>> for PgmqError {
31    fn from(err: Box<dyn std::error::Error>) -> Self {
32        PgmqError::InstallationError(err.to_string())
33    }
34}
35
36impl From<String> for PgmqError {
37    fn from(err: String) -> Self {
38        PgmqError::InstallationError(err)
39    }
40}