reifydb_core/interceptor/
table.rs1use std::marker::PhantomData;
2
3use reifydb_type::RowNumber;
4
5use crate::{
6 define_api_function, define_closure_interceptor, define_interceptor, impl_register_interceptor,
7 interface::TableDef, value::encoded::EncodedValues,
8};
9
10define_interceptor!(
12 context: TablePreInsertContext<T>,
13 trait: TablePreInsertInterceptor,
14 fields: {
15 txn: &'a mut T,
16 table: &'a TableDef,
17 row: &'a EncodedValues}
18);
19
20define_closure_interceptor!(
21 ClosureTablePreInsertInterceptor,
22 TablePreInsertInterceptor,
23 TablePreInsertContext,
24 with_transaction
25);
26
27define_api_function!(
28 table_pre_insert,
29 ClosureTablePreInsertInterceptor<T, F>,
30 TablePreInsertContext<T>
31);
32
33define_interceptor!(
35 context: TablePostInsertContext<T>,
36 trait: TablePostInsertInterceptor,
37 fields: {
38 txn: &'a mut T,
39 table: &'a TableDef,
40 id: RowNumber,
41 row: &'a EncodedValues}
42);
43
44define_closure_interceptor!(
45 ClosureTablePostInsertInterceptor,
46 TablePostInsertInterceptor,
47 TablePostInsertContext,
48 with_transaction
49);
50
51define_api_function!(
52 table_post_insert,
53 ClosureTablePostInsertInterceptor<T, F>,
54 TablePostInsertContext<T>
55);
56
57define_interceptor!(
59 context: TablePreUpdateContext<T>,
60 trait: TablePreUpdateInterceptor,
61 fields: {
62 txn: &'a mut T,
63 table: &'a TableDef,
64 id: RowNumber,
65 row: &'a EncodedValues}
66);
67
68define_closure_interceptor!(
69 ClosureTablePreUpdateInterceptor,
70 TablePreUpdateInterceptor,
71 TablePreUpdateContext,
72 with_transaction
73);
74
75define_api_function!(
76 table_pre_update,
77 ClosureTablePreUpdateInterceptor<T, F>,
78 TablePreUpdateContext<T>
79);
80
81define_interceptor!(
83 context: TablePostUpdateContext<T>,
84 trait: TablePostUpdateInterceptor,
85 fields: {
86 txn: &'a mut T,
87 table: &'a TableDef,
88 id: RowNumber,
89 row: &'a EncodedValues,
90 old_row: &'a EncodedValues}
91);
92
93define_closure_interceptor!(
94 ClosureTablePostUpdateInterceptor,
95 TablePostUpdateInterceptor,
96 TablePostUpdateContext,
97 with_transaction
98);
99
100define_api_function!(
101 table_post_update,
102 ClosureTablePostUpdateInterceptor<T, F>,
103 TablePostUpdateContext<T>
104);
105
106define_interceptor!(
108 context: TablePreDeleteContext<T>,
109 trait: TablePreDeleteInterceptor,
110 fields: {
111 txn: &'a mut T,
112 table: &'a TableDef,
113 id: RowNumber}
114);
115
116define_closure_interceptor!(
117 ClosureTablePreDeleteInterceptor,
118 TablePreDeleteInterceptor,
119 TablePreDeleteContext,
120 with_transaction
121);
122
123define_api_function!(
124 table_pre_delete,
125 ClosureTablePreDeleteInterceptor<T, F>,
126 TablePreDeleteContext<T>
127);
128
129define_interceptor!(
131 context: TablePostDeleteContext<T>,
132 trait: TablePostDeleteInterceptor,
133 fields: {
134 txn: &'a mut T,
135 table: &'a TableDef,
136 id: RowNumber,
137 deleted_row: &'a EncodedValues}
138);
139
140define_closure_interceptor!(
141 ClosureTablePostDeleteInterceptor,
142 TablePostDeleteInterceptor,
143 TablePostDeleteContext,
144 with_transaction
145);
146
147define_api_function!(
148 table_post_delete,
149 ClosureTablePostDeleteInterceptor<T, F>,
150 TablePostDeleteContext<T>
151);
152
153impl_register_interceptor!(
154 ClosureTablePreInsertInterceptor<T, F>,
155 TablePreInsertContext<T>,
156 TablePreInsertInterceptor,
157 table_pre_insert
158);
159
160impl_register_interceptor!(
161 ClosureTablePostInsertInterceptor<T, F>,
162 TablePostInsertContext<T>,
163 TablePostInsertInterceptor,
164 table_post_insert
165);
166
167impl_register_interceptor!(
168 ClosureTablePreUpdateInterceptor<T, F>,
169 TablePreUpdateContext<T>,
170 TablePreUpdateInterceptor,
171 table_pre_update
172);
173
174impl_register_interceptor!(
175 ClosureTablePostUpdateInterceptor<T, F>,
176 TablePostUpdateContext<T>,
177 TablePostUpdateInterceptor,
178 table_post_update
179);
180
181impl_register_interceptor!(
182 ClosureTablePreDeleteInterceptor<T, F>,
183 TablePreDeleteContext<T>,
184 TablePreDeleteInterceptor,
185 table_pre_delete
186);
187
188impl_register_interceptor!(
189 ClosureTablePostDeleteInterceptor<T, F>,
190 TablePostDeleteContext<T>,
191 TablePostDeleteInterceptor,
192 table_post_delete
193);