shepherd-launcher/crates/shepherd-store/src/lib.rs
2025-12-26 15:35:27 -05:00

47 lines
944 B
Rust

//! Persistence layer for shepherdd
//!
//! Provides:
//! - Audit log (append-only)
//! - Usage accounting (per entry/day)
//! - Cooldown tracking
//! - State snapshot for recovery
mod audit;
mod sqlite;
mod traits;
pub use audit::*;
pub use sqlite::*;
pub use traits::*;
use thiserror::Error;
/// Store errors
#[derive(Debug, Error)]
pub enum StoreError {
#[error("Database error: {0}")]
Database(String),
#[error("Serialization error: {0}")]
Serialization(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Not found: {0}")]
NotFound(String),
}
impl From<rusqlite::Error> for StoreError {
fn from(e: rusqlite::Error) -> Self {
StoreError::Database(e.to_string())
}
}
impl From<serde_json::Error> for StoreError {
fn from(e: serde_json::Error) -> Self {
StoreError::Serialization(e.to_string())
}
}
pub type StoreResult<T> = Result<T, StoreError>;