use thiserror::Error;
pub type Result<T> = std::result::Result<T, PromqlError>;
#[derive(Debug, Error)]
pub enum PromqlError {
#[error("parse error: {0}")]
Parse(String),
#[error("unexpected token: expected {expected}, found {found}")]
UnexpectedToken { expected: String, found: String },
#[error("unknown function '{0}'")]
UnknownFunction(String),
#[error("invalid argument count for '{func}': expected {expected}, got {got}")]
ArgumentCount {
func: String,
expected: String,
got: usize,
},
#[error("type error: {0}")]
Type(String),
#[error("evaluation error: {0}")]
Eval(String),
#[error("regex error: {0}")]
Regex(String),
#[error("storage error: {0}")]
Storage(#[from] crate::TsinkError),
}
impl From<regex::Error> for PromqlError {
fn from(value: regex::Error) -> Self {
PromqlError::Regex(value.to_string())
}
}