genegraph_storage/
lib.rs

1#![allow(async_fn_in_trait)]
2pub mod lance_storage_graph;
3pub mod metadata;
4pub mod traits;
5
6#[cfg(test)]
7mod tests;
8
9use std::fmt;
10
11// Error Handling harness
12#[derive(Debug)]
13pub enum StorageError {
14    Io(String),
15    Serde(serde_json::Error),
16    Parquet(String),
17    Invalid(String),
18    Lance(String),
19    QueryError(String),
20}
21
22impl fmt::Display for StorageError {
23    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24        match self {
25            StorageError::Io(msg) => write!(f, "IO error: {}", msg),
26            StorageError::Serde(msg) => write!(f, "Serialization error: {}", msg),
27            StorageError::Parquet(msg) => write!(f, "Parquet error: {}", msg),
28            StorageError::Invalid(msg) => write!(f, "Invalid data: {}", msg),
29            StorageError::Lance(msg) => write!(f, "Lance error: {}", msg),
30            StorageError::QueryError(msg) => write!(f, "Query error: {}", msg),
31        }
32    }
33}
34
35impl std::error::Error for StorageError {}
36
37pub type StorageResult<T> = Result<T, StorageError>;
38
39// Logging harness
40use std::sync::Once;
41
42static INIT: Once = Once::new();
43
44pub fn init() {
45    INIT.call_once(|| {
46        // Read RUST_LOG env variable, default to "info" if not set
47        let env = env_logger::Env::default().default_filter_or("debug");
48
49        // don't panic if called multiple times across binaries
50        let _ = env_logger::Builder::from_env(env).try_init();
51    });
52}