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>;