Skip to content

Commit

Permalink
feat: query defillama api util
Browse files Browse the repository at this point in the history
  • Loading branch information
EvolveArt committed Nov 22, 2024
1 parent d09e88e commit 202afed
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 151 deletions.
85 changes: 53 additions & 32 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ serde = { version = "1.0.130", features = ["derive"] }
serde_json = { version = "1.0.130" }
starknet = "0.11.0"
strum = { version = "0.25.0", features = ["derive"] }
thiserror = "2.0"
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
tracing-subscriber = "0.3"
Expand Down
50 changes: 21 additions & 29 deletions src/error.rs
Original file line number Diff line number Diff line change
@@ -1,39 +1,31 @@
use std::{error::Error as StdError, fmt};

use diesel::result::Error as DieselError;
use diesel_async::pooled_connection::deadpool::PoolError;
use starknet::providers::ProviderError;
use thiserror::Error;

#[derive(Debug)]
#[derive(Error, Debug)]
pub enum MonitoringError {
#[error("Price error: {0}")]
Price(String),
Database(diesel::result::Error),
Connection(diesel_async::pooled_connection::deadpool::PoolError),

#[error("Database error: {0}")]
Database(#[from] DieselError),

#[error("Connection error: {0}")]
Connection(#[from] PoolError),

#[error("API error: {0}")]
Api(String),

#[error("Conversion error: {0}")]
Conversion(String),

#[error("OnChain error: {0}")]
OnChain(String),
Provider(ProviderError),
InvalidTimestamp(u64),
}

impl StdError for MonitoringError {}

impl fmt::Display for MonitoringError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
MonitoringError::Price(e) => write!(f, "Price Error: {}", e),
MonitoringError::Database(e) => write!(f, "Database Error: {}", e),
MonitoringError::Connection(e) => write!(f, "Connection Error: {}", e),
MonitoringError::Api(e) => write!(f, "API Error: {}", e),
MonitoringError::Conversion(e) => write!(f, "Conversion Error: {}", e),
MonitoringError::OnChain(e) => write!(f, "OnChain Error: {}", e),
MonitoringError::Provider(e) => write!(f, "Provider Error: {}", e),
MonitoringError::InvalidTimestamp(e) => write!(f, "Invalid Timestamp: {}", e),
}
}
}
#[error("Provider error: {0}")]
Provider(#[from] ProviderError),

// Convert diesel error to our custom error
impl From<diesel::result::Error> for MonitoringError {
fn from(err: diesel::result::Error) -> MonitoringError {
MonitoringError::Database(err)
}
#[error("Invalid timestamp: {0}")]
InvalidTimestamp(u64),
}
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,4 @@ pub(crate) async fn vrf_monitor(pool: Pool<AsyncDieselConnectionManager<AsyncPgC
let results: Vec<_> = futures::future::join_all(tasks).await;
log_tasks_results("VRF", results);
}
}
}
Loading

0 comments on commit 202afed

Please sign in to comment.