use anyhow::Result;
use crate::state::events::EventLog;
use crate::types::{ExecutionState, Receipt};
pub trait StateStore: Send + Sync {
fn save_state(&self, state: &ExecutionState) -> Result<()>;
fn load_state(&self) -> Result<Option<ExecutionState>>;
fn save_receipt(&self, receipt: &Receipt) -> Result<()>;
fn load_receipt(&self) -> Result<Option<Receipt>>;
fn save_events(&self, events: &EventLog) -> Result<()>;
fn load_events(&self) -> Result<Option<EventLog>>;
fn clear(&self) -> Result<()>;
fn validate_version(&self, version: &str) -> Result<()> {
validate_schema_version(version)
}
}
pub fn validate_schema_version(version: &str) -> Result<()> {
shipper_types::schema::validate_schema_version(
version,
crate::state::execution_state::MINIMUM_SUPPORTED_VERSION,
"schema",
)
}
mod fs;
pub use fs::FileStore;
#[cfg(test)]
mod tests;
#[cfg(test)]
mod snapshot_tests;
#[cfg(test)]
mod path_edge_case_tests;