reifydb_engine/
test_utils.rs1use reifydb_catalog::{
5 CatalogStore, MaterializedCatalog,
6 store::{
7 namespace::NamespaceToCreate,
8 table::{TableColumnToCreate, TableToCreate},
9 },
10};
11use reifydb_core::{event::EventBus, interceptor::Interceptors};
12use reifydb_store_transaction::TransactionStore;
13pub use reifydb_transaction::multi::{TransactionMultiVersion, transaction::serializable::TransactionSerializable};
14use reifydb_transaction::{
15 cdc::TransactionCdc,
16 single::{TransactionSingleVersion, TransactionSvl},
17};
18use reifydb_type::{Type, TypeConstraint};
19
20use crate::StandardCommandTransaction;
21
22pub fn create_test_command_transaction() -> StandardCommandTransaction {
23 let store = TransactionStore::testing_memory();
24
25 let event_bus = EventBus::new();
26 let single_svl = TransactionSvl::new(store.clone(), event_bus.clone());
27 let single = TransactionSingleVersion::SingleVersionLock(single_svl.clone());
28 let cdc = TransactionCdc::new(store.clone());
29 let multi_serializable = TransactionSerializable::new(store, single.clone(), event_bus.clone());
30 let multi = TransactionMultiVersion::Serializable(multi_serializable);
31
32 StandardCommandTransaction::new(multi, single, cdc, event_bus, MaterializedCatalog::new(), Interceptors::new())
33 .unwrap()
34}
35
36pub fn create_test_command_transaction_with_internal_schema() -> StandardCommandTransaction {
37 let store = TransactionStore::testing_memory();
38
39 let event_bus = EventBus::new();
40 let single_svl = TransactionSvl::new(store.clone(), event_bus.clone());
41 let single = TransactionSingleVersion::SingleVersionLock(single_svl.clone());
42 let cdc = TransactionCdc::new(store.clone());
43 let multi_serializable = TransactionSerializable::new(store.clone(), single.clone(), event_bus.clone());
44 let multi = TransactionMultiVersion::Serializable(multi_serializable);
45 let mut result = StandardCommandTransaction::new(
46 multi,
47 single,
48 cdc,
49 event_bus,
50 MaterializedCatalog::new(),
51 Interceptors::new(),
52 )
53 .unwrap();
54
55 let namespace = CatalogStore::create_namespace(
56 &mut result,
57 NamespaceToCreate {
58 namespace_fragment: None,
59 name: "reifydb".to_string(),
60 },
61 )
62 .unwrap();
63
64 CatalogStore::create_table(
65 &mut result,
66 TableToCreate {
67 fragment: None,
68 namespace: namespace.id,
69 table: "flows".to_string(),
70 columns: vec![
71 TableColumnToCreate {
72 name: "id".to_string(),
73 constraint: TypeConstraint::unconstrained(Type::Int8),
74 policies: vec![],
75 auto_increment: true,
76 fragment: None,
77 },
78 TableColumnToCreate {
79 name: "data".to_string(),
80 constraint: TypeConstraint::unconstrained(Type::Blob),
81 policies: vec![],
82 auto_increment: false,
83 fragment: None,
84 },
85 ],
86 retention_policy: None,
87 },
88 )
89 .unwrap();
90
91 result
92}