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