use thiserror::Error;
#[derive(Error, Debug)]
#[allow(dead_code)] pub enum NodeTokenError {
#[error("Configuration error: {0}")]
Config(#[from] anyhow::Error),
#[error("Network error: {0}")]
Network(#[from] reqwest::Error),
#[error("HTTP request failed with status {status}: {message}")]
HttpError { status: u16, message: String },
#[error("Ollama error: {0}")]
Ollama(String),
#[error("Protocol error: {0}")]
Protocol(String),
#[error("Storage error: {0}")]
Storage(String),
#[error("Task execution error: {0}")]
TaskExecution(String),
#[error("Node has been excluded")]
NodeExcluded,
#[error("Invalid or missing session")]
InvalidSession,
}
impl PartialEq for NodeTokenError {
fn eq(&self, other: &Self) -> bool {
match (self, other) {
(
NodeTokenError::HttpError {
status: s1,
message: m1,
},
NodeTokenError::HttpError {
status: s2,
message: m2,
},
) => s1 == s2 && m1 == m2,
(NodeTokenError::Ollama(m1), NodeTokenError::Ollama(m2)) => m1 == m2,
(NodeTokenError::Protocol(m1), NodeTokenError::Protocol(m2)) => m1 == m2,
(NodeTokenError::Storage(m1), NodeTokenError::Storage(m2)) => m1 == m2,
(NodeTokenError::TaskExecution(m1), NodeTokenError::TaskExecution(m2)) => m1 == m2,
(NodeTokenError::NodeExcluded, NodeTokenError::NodeExcluded) => true,
(NodeTokenError::InvalidSession, NodeTokenError::InvalidSession) => true,
_ => false,
}
}
}
#[allow(dead_code)] pub type StorageResult<T> = Result<T, NodeTokenError>;
pub type NetworkResult<T> = Result<T, NodeTokenError>;
pub type OllamaResult<T> = Result<T, NodeTokenError>;