#[cfg(feature = "polars")]
use polars::error::PolarsError;
use reqwest::StatusCode;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum GieError {
#[error("request failed: {0}")]
Http(#[from] reqwest::Error),
#[error("failed to decode response JSON: {0}")]
Json(#[from] serde_json::Error),
#[error("HTTP {status}: {body}")]
HttpStatus { status: StatusCode, body: String },
#[error("GIE API error: {error}: {message}")]
Api { error: String, message: String },
#[error("invalid date input: {0}")]
InvalidDateInput(String),
#[error("invalid dataset type input: {0}")]
InvalidDatasetTypeInput(String),
#[error("invalid page input: {0}")]
InvalidPageInput(String),
#[error("invalid size input: {0}")]
InvalidSizeInput(String),
#[error("invalid text filter input: {0}")]
InvalidTextFilterInput(String),
#[error("invalid date range input: {0}")]
InvalidDateRangeInput(String),
#[cfg(feature = "polars")]
#[error("failed to build polars DataFrame: {0}")]
Polars(#[from] PolarsError),
}