reifydb_transaction/single/svl/
read.rs1use std::sync::RwLockReadGuard;
5
6use reifydb_core::interface::{BoxedSingleVersionIter, SingleVersionQueryTransaction};
7use reifydb_store_transaction::{SingleVersionContains, SingleVersionGet, SingleVersionRange, SingleVersionRangeRev};
8
9use super::*;
10
11pub struct SvlQueryTransaction<'a> {
12 pub(super) store: RwLockReadGuard<'a, TransactionStore>,
13}
14
15impl SingleVersionQueryTransaction for SvlQueryTransaction<'_> {
16 fn get(&mut self, key: &EncodedKey) -> crate::Result<Option<SingleVersionValues>> {
17 self.store.get(key)
18 }
19
20 fn contains_key(&mut self, key: &EncodedKey) -> crate::Result<bool> {
21 self.store.contains(key)
22 }
23
24 fn range(&mut self, range: EncodedKeyRange) -> crate::Result<BoxedSingleVersionIter> {
25 let iter = self.store.range(range)?;
26 Ok(Box::new(iter.into_iter()))
27 }
28
29 fn range_rev(&mut self, range: EncodedKeyRange) -> crate::Result<BoxedSingleVersionIter> {
30 let iter = self.store.range_rev(range)?;
31 Ok(Box::new(iter.into_iter()))
32 }
33
34 fn prefix(&mut self, prefix: &EncodedKey) -> crate::Result<BoxedSingleVersionIter> {
35 let iter = self.store.prefix(prefix)?;
36 Ok(Box::new(iter.into_iter()))
37 }
38
39 fn prefix_rev(&mut self, prefix: &EncodedKey) -> crate::Result<BoxedSingleVersionIter> {
40 let iter = self.store.prefix_rev(prefix)?;
41 Ok(Box::new(iter.into_iter()))
42 }
43}