reifydb_transaction/single/svl/
read.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4use 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}