reifydb_transaction/single/
mod.rs1mod svl;
5
6use reifydb_core::{
7 EncodedKey,
8 event::EventBus,
9 interface::{SingleVersionTransaction, WithEventBus},
10};
11use reifydb_store_transaction::TransactionStore;
12pub use svl::{SvlCommandTransaction, SvlQueryTransaction, TransactionSvl};
13
14#[repr(u8)]
15#[derive(Clone)]
16pub enum TransactionSingleVersion {
17 SingleVersionLock(TransactionSvl) = 0,
18}
19
20impl TransactionSingleVersion {
21 pub fn svl(store: TransactionStore, bus: EventBus) -> Self {
22 Self::SingleVersionLock(TransactionSvl::new(store, bus))
23 }
24}
25
26impl TransactionSingleVersion {
27 pub fn testing() -> Self {
28 Self::SingleVersionLock(TransactionSvl::new(TransactionStore::testing_memory(), EventBus::default()))
29 }
30}
31
32impl WithEventBus for TransactionSingleVersion {
33 fn event_bus(&self) -> &EventBus {
34 match self {
35 TransactionSingleVersion::SingleVersionLock(t) => t.event_bus(),
36 }
37 }
38}
39
40impl SingleVersionTransaction for TransactionSingleVersion {
41 type Query<'a> = SvlQueryTransaction<'a>;
42 type Command<'a> = SvlCommandTransaction<'a>;
43
44 #[inline]
45 fn begin_query<'a, I>(&self, keys: I) -> reifydb_core::Result<Self::Query<'_>>
46 where
47 I: IntoIterator<Item = &'a EncodedKey>,
48 {
49 match self {
50 TransactionSingleVersion::SingleVersionLock(t) => t.begin_query(keys),
51 }
52 }
53
54 #[inline]
55 fn begin_command<'a, I>(&self, keys: I) -> reifydb_core::Result<Self::Command<'_>>
56 where
57 I: IntoIterator<Item = &'a EncodedKey>,
58 {
59 match self {
60 TransactionSingleVersion::SingleVersionLock(t) => t.begin_command(keys),
61 }
62 }
63}