1use thiserror::Error;
7pub use yldfi_common::api::ApiError;
8
9#[derive(Error, Debug)]
11pub enum DomainError {
12 #[error("Invalid API key")]
14 InvalidApiKey,
15
16 #[error("Query execution failed: {0}")]
18 ExecutionFailed(String),
19
20 #[error("Query execution timed out after {0} seconds")]
22 ExecutionTimeout(u64),
23
24 #[error("Insufficient credits")]
26 InsufficientCredits,
27
28 #[error("Resource not found: {0}")]
30 NotFound(String),
31}
32
33pub type Error = ApiError<DomainError>;
35
36pub type Result<T> = std::result::Result<T, Error>;
38
39pub fn invalid_api_key() -> Error {
42 ApiError::domain(DomainError::InvalidApiKey)
43}
44
45pub fn execution_failed(message: impl Into<String>) -> Error {
47 ApiError::domain(DomainError::ExecutionFailed(message.into()))
48}
49
50pub fn execution_timeout(seconds: u64) -> Error {
52 ApiError::domain(DomainError::ExecutionTimeout(seconds))
53}
54
55pub fn insufficient_credits() -> Error {
57 ApiError::domain(DomainError::InsufficientCredits)
58}
59
60pub fn not_found(resource: impl Into<String>) -> Error {
62 ApiError::domain(DomainError::NotFound(resource.into()))
63}