use std::sync::Arc;
use boxlite_shared::errors::BoxliteResult;
use crate::litebox::snapshot_mgr::SnapshotInfo;
use crate::runtime::backend::SnapshotBackend;
use crate::runtime::options::SnapshotOptions;
pub struct SnapshotHandle {
snapshot_backend: Arc<dyn SnapshotBackend>,
}
impl SnapshotHandle {
pub(crate) fn new(snapshot_backend: Arc<dyn SnapshotBackend>) -> Self {
Self { snapshot_backend }
}
pub async fn create(
&self,
options: SnapshotOptions,
name: &str,
) -> BoxliteResult<SnapshotInfo> {
self.snapshot_backend.create(options, name).await
}
pub async fn list(&self) -> BoxliteResult<Vec<SnapshotInfo>> {
self.snapshot_backend.list().await
}
pub async fn get(&self, name: &str) -> BoxliteResult<Option<SnapshotInfo>> {
self.snapshot_backend.get(name).await
}
pub async fn remove(&self, name: &str) -> BoxliteResult<()> {
self.snapshot_backend.remove(name).await
}
pub async fn restore(&self, name: &str) -> BoxliteResult<()> {
self.snapshot_backend.restore(name).await
}
}