1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#[cfg(feature = "sled-storage")] use crate::{execute, storages::SledStorage, Payload, Query, Result}; #[cfg(feature = "sled-storage")] use futures::executor::block_on; #[cfg(feature = "sled-storage")] pub struct Glue { storage: Option<SledStorage>, } #[cfg(feature = "sled-storage")] impl Glue { pub fn new(storage: SledStorage) -> Self { let storage = Some(storage); Self { storage } } pub fn execute(&mut self, query: &Query) -> Result<Payload> { let storage = self.storage.take().unwrap(); match block_on(execute(storage, query)) { Ok((storage, payload)) => { self.storage = Some(storage); Ok(payload) } Err((storage, error)) => { self.storage = Some(storage); Err(error) } } } }