use thiserror::Error;
pub use yldfi_common::api::ApiError;
#[derive(Error, Debug)]
pub enum DomainError {
#[error("Invalid API key")]
InvalidApiKey,
#[error("Query execution failed: {0}")]
ExecutionFailed(String),
#[error("Query execution timed out after {0} seconds")]
ExecutionTimeout(u64),
#[error("Insufficient credits")]
InsufficientCredits,
#[error("Resource not found: {0}")]
NotFound(String),
}
pub type Error = ApiError<DomainError>;
pub type Result<T> = std::result::Result<T, Error>;
pub fn invalid_api_key() -> Error {
ApiError::domain(DomainError::InvalidApiKey)
}
pub fn execution_failed(message: impl Into<String>) -> Error {
ApiError::domain(DomainError::ExecutionFailed(message.into()))
}
pub fn execution_timeout(seconds: u64) -> Error {
ApiError::domain(DomainError::ExecutionTimeout(seconds))
}
pub fn insufficient_credits() -> Error {
ApiError::domain(DomainError::InsufficientCredits)
}
pub fn not_found(resource: impl Into<String>) -> Error {
ApiError::domain(DomainError::NotFound(resource.into()))
}