Skip to main content

knut_bifrost/
error.rs

1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, BifrostError>;
4
5#[derive(Debug, Error)]
6pub enum BifrostError {
7    #[error("IO error: {0}")]
8    Io(#[from] std::io::Error),
9
10    #[error("YAML parse error: {0}")]
11    Yaml(#[from] serde_yaml::Error),
12
13    #[error("JSON error: {0}")]
14    Json(#[from] serde_json::Error),
15
16    #[error("RON parse error: {0}")]
17    RonParse(#[from] ron::error::SpannedError),
18
19    #[error("RON serialize error: {0}")]
20    RonSer(#[from] ron::Error),
21
22    #[error("Arrow error: {0}")]
23    Arrow(#[from] arrow::error::ArrowError),
24
25    #[error("FalkorDB error: {0}")]
26    Falkor(#[from] graphar_falkordb::FalkorError),
27
28    #[error("Valkey error: {0}")]
29    Valkey(#[from] redis::RedisError),
30
31    #[error("Column '{0}' not found in table batch")]
32    ColumnNotFound(String),
33
34    #[error("transform produces two output columns named '{0}' (endpoint/property name collision)")]
35    DuplicateOutputColumn(String),
36
37    #[error("Custom transform '{0}' is not registered — call TransformRegistry::register first")]
38    TransformNotRegistered(String),
39
40    #[error("Table '{0}' has an empty pipeline")]
41    EmptyPipeline(String),
42
43    #[error("Source error: {0}")]
44    Source(String),
45
46    /// The cursor's snapshot is gone from the source table (expired by
47    /// snapshot maintenance), so the changes since it can no longer be read.
48    /// Never resolved automatically: empty the destination, delete the cursor,
49    /// and let the next run do its initial full load. Added 2026-10-02.
50    #[error("full reload required: {0}")]
51    FullReloadRequired(String),
52
53    #[error("{0}")]
54    Other(String),
55}