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