- Fix deserialization error when parsing config from environment variables - Add proper array format support for adapters configuration - Update environment variable examples with correct format - Improve documentation for configuration loading - Implement helper functions for environment variable validation This change fixes the "invalid type: map, expected a sequence" error by ensuring proper formatting of array-type fields in environment variables.
47 lines
1.5 KiB
Rust
47 lines
1.5 KiB
Rust
use config::ConfigError;
|
|
use thiserror::Error;
|
|
use tokio::sync::mpsc::error;
|
|
use tokio::task::JoinError;
|
|
|
|
/// The `Error` enum represents all possible errors that can occur in the application.
|
|
/// It implements the `std::error::Error` trait and provides a way to convert various error types into a single error type.
|
|
#[derive(Error, Debug)]
|
|
pub enum Error {
|
|
#[error("Join error: {0}")]
|
|
JoinError(#[from] JoinError),
|
|
#[error("IO error: {0}")]
|
|
Io(#[from] std::io::Error),
|
|
#[error("Serialization error: {0}")]
|
|
Serde(#[from] serde_json::Error),
|
|
#[error("HTTP error: {0}")]
|
|
Http(#[from] reqwest::Error),
|
|
#[cfg(feature = "kafka")]
|
|
#[error("Kafka error: {0}")]
|
|
Kafka(#[from] rdkafka::error::KafkaError),
|
|
#[cfg(feature = "mqtt")]
|
|
#[error("MQTT error: {0}")]
|
|
Mqtt(#[from] rumqttc::ClientError),
|
|
#[error("Channel send error: {0}")]
|
|
ChannelSend(#[from] Box<error::SendError<crate::event::Event>>),
|
|
#[error("Feature disabled: {0}")]
|
|
FeatureDisabled(&'static str),
|
|
#[error("Event bus already started")]
|
|
EventBusStarted,
|
|
#[error("necessary fields are missing:{0}")]
|
|
MissingField(&'static str),
|
|
#[error("field verification failed:{0}")]
|
|
ValidationError(&'static str),
|
|
#[error("Custom error: {0}")]
|
|
Custom(String),
|
|
#[error("Configuration error: {0}")]
|
|
ConfigError(String),
|
|
#[error("Configuration loading error: {0}")]
|
|
Config(#[from] ConfigError),
|
|
}
|
|
|
|
impl Error {
|
|
pub fn custom(msg: &str) -> Error {
|
|
Self::Custom(msg.to_string())
|
|
}
|
|
}
|