1pub use crate::wit::wasi::keyvalue::store::Error;
2use crate::wit::wasi::keyvalue::store::{Bucket, open as wit_open};
3
4pub fn open() -> Result<Bucket, String> {
5 return wit_open("").map_err(|err| err.to_string());
6}
7
8pub struct Store {
9 bucket: Bucket,
10}
11
12impl Store {
13 pub fn open() -> Result<Self, String> {
14 return Ok(Self { bucket: open()? });
15 }
16
17 pub fn get(&self, key: &str) -> Result<Option<Vec<u8>>, Error> {
18 return self.bucket.get(key);
19 }
20
21 pub fn set(&mut self, key: &str, value: &[u8]) -> Result<(), Error> {
22 return self.bucket.set(key, value);
23 }
24
25 pub fn delete(&mut self, key: &str) -> Result<(), Error> {
26 return self.bucket.delete(key);
27 }
28
29 pub fn exists(&mut self, key: &str) -> Result<bool, Error> {
30 return self.bucket.exists(key);
31 }
32}