use super::wit::v2::key_value;
#[cfg(feature = "json")]
use serde::{de::DeserializeOwned, Serialize};
#[doc(inline)]
pub use key_value::{Error, Store};
impl Store {
pub fn open_default() -> Result<Self, Error> {
Self::open("default")
}
}
impl Store {
#[cfg(feature = "json")]
pub fn set_json<T: Serialize>(
&self,
key: impl AsRef<str>,
value: &T,
) -> Result<(), anyhow::Error> {
Ok(self.set(key.as_ref(), &serde_json::to_vec(value)?)?)
}
#[cfg(feature = "json")]
pub fn get_json<T: DeserializeOwned>(
&self,
key: impl AsRef<str>,
) -> Result<Option<T>, anyhow::Error> {
let Some(value) = self.get(key.as_ref())? else {
return Ok(None);
};
Ok(serde_json::from_slice(&value)?)
}
}