Skip to main content

carbon_core/
error.rs

1//! Crate-wide error type and `Result` alias used across the pipeline.
2//!
3//! # Categories
4//!
5//! - Structural data errors — missing transaction fields required for
6//!   processing: `MissingFeePayer`, `MissingInnerInstructions`,
7//!   `MissingAccountInTransaction`, `MissingInstructionData`.
8//! - Datasource contract violations —
9//!   `MissingUpdateTypeInDatasource(UpdateType)`.
10//! - Runtime failures — channel or datasource execution issues:
11//!   `FailedToReceiveUpdates(String)`, `FailedToConsumeDatasource(String)`.
12//! - `Custom(String)` — catch-all for external or feature-specific errors (e.g.
13//!   `postgres` / `sqlx` wrapping).
14
15use {crate::datasource::UpdateType, thiserror::Error};
16
17#[derive(Error, Debug)]
18pub enum Error {
19    #[error("Missing update type in datasource")]
20    MissingUpdateTypeInDatasource(UpdateType),
21    #[error("Failed to receive updates({0})")]
22    FailedToReceiveUpdates(String),
23    #[error("Transaction missing fee payer")]
24    MissingFeePayer,
25    #[error("Missing inner instructions")]
26    MissingInnerInstructions,
27    #[error("Missing account in transaction")]
28    MissingAccountInTransaction,
29    #[error("Missing instruction data")]
30    MissingInstructionData,
31    #[error("Failed to consume datasource ({0})")]
32    FailedToConsumeDatasource(String),
33    #[error("Custom error: {0}")]
34    Custom(String),
35}
36
37pub type CarbonResult<T> = Result<T, Error>;