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::Transaction;
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 = Transaction::new(store, single.clone(), event_bus.clone());
30
31 StandardCommandTransaction::new(multi, single, cdc, event_bus, MaterializedCatalog::new(), Interceptors::new())
32 .unwrap()
33}
34
35pub fn create_test_command_transaction_with_internal_schema() -> StandardCommandTransaction {
36 let store = TransactionStore::testing_memory();
37
38 let event_bus = EventBus::new();
39 let single_svl = TransactionSvl::new(store.clone(), event_bus.clone());
40 let single = TransactionSingleVersion::SingleVersionLock(single_svl.clone());
41 let cdc = TransactionCdc::new(store.clone());
42 let multi = Transaction::new(store.clone(), single.clone(), event_bus.clone());
43 let mut result = StandardCommandTransaction::new(
44 multi,
45 single,
46 cdc,
47 event_bus,
48 MaterializedCatalog::new(),
49 Interceptors::new(),
50 )
51 .unwrap();
52
53 let namespace = CatalogStore::create_namespace(
54 &mut result,
55 NamespaceToCreate {
56 namespace_fragment: None,
57 name: "reifydb".to_string(),
58 },
59 )
60 .unwrap();
61
62 CatalogStore::create_table(
63 &mut result,
64 TableToCreate {
65 fragment: None,
66 namespace: namespace.id,
67 table: "flows".to_string(),
68 columns: vec![
69 TableColumnToCreate {
70 name: "id".to_string(),
71 constraint: TypeConstraint::unconstrained(Type::Int8),
72 policies: vec![],
73 auto_increment: true,
74 fragment: None,
75 dictionary_id: None,
76 },
77 TableColumnToCreate {
78 name: "data".to_string(),
79 constraint: TypeConstraint::unconstrained(Type::Blob),
80 policies: vec![],
81 auto_increment: false,
82 fragment: None,
83 dictionary_id: None,
84 },
85 ],
86 retention_policy: None,
87 },
88 )
89 .unwrap();
90
91 result
92}