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::TransactionMulti;
14use reifydb_transaction::{
15 cdc::TransactionCdc,
16 single::{TransactionSingle, TransactionSvl},
17};
18use reifydb_type::{Type, TypeConstraint};
19
20use crate::StandardCommandTransaction;
21
22pub async fn create_test_command_transaction() -> StandardCommandTransaction {
23 let store = TransactionStore::testing_memory().await;
24
25 let event_bus = EventBus::new();
26 let single_svl = TransactionSvl::new(store.clone(), event_bus.clone());
27 let single = TransactionSingle::SingleVersionLock(single_svl.clone());
28 let cdc = TransactionCdc::new(store.clone());
29 let multi = TransactionMulti::new(store, single.clone(), event_bus.clone()).await.unwrap();
30
31 StandardCommandTransaction::new(multi, single, cdc, event_bus, MaterializedCatalog::new(), Interceptors::new())
32 .await
33 .unwrap()
34}
35
36pub async fn create_test_command_transaction_with_internal_schema() -> StandardCommandTransaction {
37 let store = TransactionStore::testing_memory().await;
38
39 let event_bus = EventBus::new();
40 let single_svl = TransactionSvl::new(store.clone(), event_bus.clone());
41 let single = TransactionSingle::SingleVersionLock(single_svl.clone());
42 let cdc = TransactionCdc::new(store.clone());
43 let multi = TransactionMulti::new(store.clone(), single.clone(), event_bus.clone()).await.unwrap();
44 let mut result = StandardCommandTransaction::new(
45 multi,
46 single,
47 cdc,
48 event_bus,
49 MaterializedCatalog::new(),
50 Interceptors::new(),
51 )
52 .await
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 .await
63 .unwrap();
64
65 CatalogStore::create_table(
66 &mut result,
67 TableToCreate {
68 fragment: None,
69 namespace: namespace.id,
70 table: "flows".to_string(),
71 columns: vec![
72 TableColumnToCreate {
73 name: "id".to_string(),
74 constraint: TypeConstraint::unconstrained(Type::Int8),
75 policies: vec![],
76 auto_increment: true,
77 fragment: None,
78 dictionary_id: None,
79 },
80 TableColumnToCreate {
81 name: "data".to_string(),
82 constraint: TypeConstraint::unconstrained(Type::Blob),
83 policies: vec![],
84 auto_increment: false,
85 fragment: None,
86 dictionary_id: None,
87 },
88 ],
89 retention_policy: None,
90 },
91 )
92 .await
93 .unwrap();
94
95 result
96}