reifydb_core/interceptor/
view.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::ViewDef, value::encoded::EncodedValues,
8};
9
10define_interceptor!(
12 context: ViewPreInsertContext<T>,
13 trait: ViewPreInsertInterceptor,
14 fields: {
15 txn: &'a mut T,
16 view: &'a ViewDef,
17 rn: RowNumber,
18 row: &'a EncodedValues}
19);
20
21define_closure_interceptor!(
22 ClosureViewPreInsertInterceptor,
23 ViewPreInsertInterceptor,
24 ViewPreInsertContext,
25 with_transaction
26);
27
28define_api_function!(
29 view_pre_insert,
30 ClosureViewPreInsertInterceptor<T, F>,
31 ViewPreInsertContext<T>
32);
33
34define_interceptor!(
36 context: ViewPostInsertContext<T>,
37 trait: ViewPostInsertInterceptor,
38 fields: {
39 txn: &'a mut T,
40 view: &'a ViewDef,
41 id: RowNumber,
42 row: &'a EncodedValues}
43);
44
45define_closure_interceptor!(
46 ClosureViewPostInsertInterceptor,
47 ViewPostInsertInterceptor,
48 ViewPostInsertContext,
49 with_transaction
50);
51
52define_api_function!(
53 view_post_insert,
54 ClosureViewPostInsertInterceptor<T, F>,
55 ViewPostInsertContext<T>
56);
57
58define_interceptor!(
60 context: ViewPreUpdateContext<T>,
61 trait: ViewPreUpdateInterceptor,
62 fields: {
63 txn: &'a mut T,
64 view: &'a ViewDef,
65 id: RowNumber,
66 row: &'a EncodedValues}
67);
68
69define_closure_interceptor!(
70 ClosureViewPreUpdateInterceptor,
71 ViewPreUpdateInterceptor,
72 ViewPreUpdateContext,
73 with_transaction
74);
75
76define_api_function!(
77 view_pre_update,
78 ClosureViewPreUpdateInterceptor<T, F>,
79 ViewPreUpdateContext<T>
80);
81
82define_interceptor!(
84 context: ViewPostUpdateContext<T>,
85 trait: ViewPostUpdateInterceptor,
86 fields: {
87 txn: &'a mut T,
88 view: &'a ViewDef,
89 id: RowNumber,
90 row: &'a EncodedValues,
91 old_row: &'a EncodedValues}
92);
93
94define_closure_interceptor!(
95 ClosureViewPostUpdateInterceptor,
96 ViewPostUpdateInterceptor,
97 ViewPostUpdateContext,
98 with_transaction
99);
100
101define_api_function!(
102 view_post_update,
103 ClosureViewPostUpdateInterceptor<T, F>,
104 ViewPostUpdateContext<T>
105);
106
107define_interceptor!(
109 context: ViewPreDeleteContext<T>,
110 trait: ViewPreDeleteInterceptor,
111 fields: {
112 txn: &'a mut T,
113 view: &'a ViewDef,
114 id: RowNumber}
115);
116
117define_closure_interceptor!(
118 ClosureViewPreDeleteInterceptor,
119 ViewPreDeleteInterceptor,
120 ViewPreDeleteContext,
121 with_transaction
122);
123
124define_api_function!(
125 view_pre_delete,
126 ClosureViewPreDeleteInterceptor<T, F>,
127 ViewPreDeleteContext<T>
128);
129
130define_interceptor!(
132 context: ViewPostDeleteContext<T>,
133 trait: ViewPostDeleteInterceptor,
134 fields: {
135 txn: &'a mut T,
136 view: &'a ViewDef,
137 id: RowNumber,
138 deleted_row: &'a EncodedValues}
139);
140
141define_closure_interceptor!(
142 ClosureViewPostDeleteInterceptor,
143 ViewPostDeleteInterceptor,
144 ViewPostDeleteContext,
145 with_transaction
146);
147
148define_api_function!(
149 view_post_delete,
150 ClosureViewPostDeleteInterceptor<T, F>,
151 ViewPostDeleteContext<T>
152);
153
154impl_register_interceptor!(
155 ClosureViewPreInsertInterceptor<T, F>,
156 ViewPreInsertContext<T>,
157 ViewPreInsertInterceptor,
158 view_pre_insert
159);
160
161impl_register_interceptor!(
162 ClosureViewPostInsertInterceptor<T, F>,
163 ViewPostInsertContext<T>,
164 ViewPostInsertInterceptor,
165 view_post_insert
166);
167
168impl_register_interceptor!(
169 ClosureViewPreUpdateInterceptor<T, F>,
170 ViewPreUpdateContext<T>,
171 ViewPreUpdateInterceptor,
172 view_pre_update
173);
174
175impl_register_interceptor!(
176 ClosureViewPostUpdateInterceptor<T, F>,
177 ViewPostUpdateContext<T>,
178 ViewPostUpdateInterceptor,
179 view_post_update
180);
181
182impl_register_interceptor!(
183 ClosureViewPreDeleteInterceptor<T, F>,
184 ViewPreDeleteContext<T>,
185 ViewPreDeleteInterceptor,
186 view_pre_delete
187);
188
189impl_register_interceptor!(
190 ClosureViewPostDeleteInterceptor<T, F>,
191 ViewPostDeleteContext<T>,
192 ViewPostDeleteInterceptor,
193 view_post_delete
194);