use thiserror::Error;
#[derive(Debug, Error)]
pub enum WorkflowTriggerError {
#[error("Authentication error: {0}")]
Auth(#[from] AuthError),
#[error("Database error: {0}")]
Database(#[from] sqlx::Error),
#[error("Repository error: {0}")]
Repository(#[from] crate::repository::RepositoryError),
#[error(transparent)]
Api(#[from] RequestError),
}
impl From<reqwest::Error> for WorkflowTriggerError {
fn from(e: reqwest::Error) -> Self {
Self::Api(RequestError::Request(e))
}
}
#[derive(Debug, Error)]
pub enum AuthError {
#[error("Could not read PEM file: {0}")]
PemFile(#[from] std::io::Error),
#[error("System time: {0}")]
Time(#[from] std::time::SystemTimeError),
#[error("JWT generation failed: {0}")]
Jwt(#[from] jsonwebtoken::errors::Error),
#[error(transparent)]
Server(#[from] RequestError),
}
impl From<reqwest::Error> for AuthError {
fn from(e: reqwest::Error) -> Self {
Self::Server(RequestError::Request(e))
}
}
#[derive(Debug, Error)]
pub enum RequestError {
#[error("HTTP request failed: {0}")]
Request(#[from] reqwest::Error),
#[error("Unexpected HTTP response ({status}): {text}")]
Response {
status: reqwest::StatusCode,
text: String,
},
}