cnidarium/storage/
temp.rs1use crate::Storage;
2use std::ops::Deref;
3use tempfile::TempDir;
4
5pub struct TempStorage {
10 inner: Storage,
11 _dir: TempDir,
12}
13
14impl Deref for TempStorage {
15 type Target = Storage;
16 fn deref(&self) -> &Self::Target {
17 &self.inner
18 }
19}
20
21impl AsRef<Storage> for TempStorage {
22 fn as_ref(&self) -> &Storage {
23 &self.inner
24 }
25}
26
27impl TempStorage {
28 pub async fn new() -> anyhow::Result<Self> {
29 let dir = tempfile::tempdir()?;
30 let db_filepath = dir.path().join("storage.db");
31 let inner = Storage::load(db_filepath.clone(), vec![]).await?;
32
33 Ok(TempStorage { inner, _dir: dir })
34 }
35
36 pub async fn new_with_prefixes(prefixes: Vec<String>) -> anyhow::Result<Self> {
37 let dir = tempfile::tempdir()?;
38 let db_filepath = dir.path().join("storage.db");
39 let inner = Storage::load(db_filepath.clone(), prefixes).await?;
40
41 Ok(TempStorage { inner, _dir: dir })
42 }
43}