reifydb_transaction/interceptor/
table_def.rs1use reifydb_core::interface::catalog::table::TableDef;
5use reifydb_type::Result;
6
7use crate::interceptor::chain::InterceptorChain;
8
9pub struct TableDefPostCreateContext<'a> {
12 pub post: &'a TableDef,
13}
14
15impl<'a> TableDefPostCreateContext<'a> {
16 pub fn new(post: &'a TableDef) -> Self {
17 Self {
18 post,
19 }
20 }
21}
22
23pub trait TableDefPostCreateInterceptor: Send + Sync {
24 fn intercept<'a>(&self, ctx: &mut TableDefPostCreateContext<'a>) -> Result<()>;
25}
26
27impl InterceptorChain<dyn TableDefPostCreateInterceptor + Send + Sync> {
28 pub fn execute(&self, mut ctx: TableDefPostCreateContext) -> Result<()> {
29 for interceptor in &self.interceptors {
30 interceptor.intercept(&mut ctx)?;
31 }
32 Ok(())
33 }
34}
35
36pub struct ClosureTableDefPostCreateInterceptor<F>
37where
38 F: for<'a> Fn(&mut TableDefPostCreateContext<'a>) -> Result<()> + Send + Sync,
39{
40 closure: F,
41}
42
43impl<F> ClosureTableDefPostCreateInterceptor<F>
44where
45 F: for<'a> Fn(&mut TableDefPostCreateContext<'a>) -> Result<()> + Send + Sync,
46{
47 pub fn new(closure: F) -> Self {
48 Self {
49 closure,
50 }
51 }
52}
53
54impl<F> Clone for ClosureTableDefPostCreateInterceptor<F>
55where
56 F: for<'a> Fn(&mut TableDefPostCreateContext<'a>) -> Result<()> + Send + Sync + Clone,
57{
58 fn clone(&self) -> Self {
59 Self {
60 closure: self.closure.clone(),
61 }
62 }
63}
64
65impl<F> TableDefPostCreateInterceptor for ClosureTableDefPostCreateInterceptor<F>
66where
67 F: for<'a> Fn(&mut TableDefPostCreateContext<'a>) -> Result<()> + Send + Sync,
68{
69 fn intercept<'a>(&self, ctx: &mut TableDefPostCreateContext<'a>) -> Result<()> {
70 (self.closure)(ctx)
71 }
72}
73
74pub fn table_def_post_create<F>(f: F) -> ClosureTableDefPostCreateInterceptor<F>
75where
76 F: for<'a> Fn(&mut TableDefPostCreateContext<'a>) -> Result<()> + Send + Sync + Clone + 'static,
77{
78 ClosureTableDefPostCreateInterceptor::new(f)
79}
80
81pub struct TableDefPreUpdateContext<'a> {
84 pub pre: &'a TableDef,
85}
86
87impl<'a> TableDefPreUpdateContext<'a> {
88 pub fn new(pre: &'a TableDef) -> Self {
89 Self {
90 pre,
91 }
92 }
93}
94
95pub trait TableDefPreUpdateInterceptor: Send + Sync {
96 fn intercept<'a>(&self, ctx: &mut TableDefPreUpdateContext<'a>) -> Result<()>;
97}
98
99impl InterceptorChain<dyn TableDefPreUpdateInterceptor + Send + Sync> {
100 pub fn execute(&self, mut ctx: TableDefPreUpdateContext) -> Result<()> {
101 for interceptor in &self.interceptors {
102 interceptor.intercept(&mut ctx)?;
103 }
104 Ok(())
105 }
106}
107
108pub struct ClosureTableDefPreUpdateInterceptor<F>
109where
110 F: for<'a> Fn(&mut TableDefPreUpdateContext<'a>) -> Result<()> + Send + Sync,
111{
112 closure: F,
113}
114
115impl<F> ClosureTableDefPreUpdateInterceptor<F>
116where
117 F: for<'a> Fn(&mut TableDefPreUpdateContext<'a>) -> Result<()> + Send + Sync,
118{
119 pub fn new(closure: F) -> Self {
120 Self {
121 closure,
122 }
123 }
124}
125
126impl<F> Clone for ClosureTableDefPreUpdateInterceptor<F>
127where
128 F: for<'a> Fn(&mut TableDefPreUpdateContext<'a>) -> Result<()> + Send + Sync + Clone,
129{
130 fn clone(&self) -> Self {
131 Self {
132 closure: self.closure.clone(),
133 }
134 }
135}
136
137impl<F> TableDefPreUpdateInterceptor for ClosureTableDefPreUpdateInterceptor<F>
138where
139 F: for<'a> Fn(&mut TableDefPreUpdateContext<'a>) -> Result<()> + Send + Sync,
140{
141 fn intercept<'a>(&self, ctx: &mut TableDefPreUpdateContext<'a>) -> Result<()> {
142 (self.closure)(ctx)
143 }
144}
145
146pub fn table_def_pre_update<F>(f: F) -> ClosureTableDefPreUpdateInterceptor<F>
147where
148 F: for<'a> Fn(&mut TableDefPreUpdateContext<'a>) -> Result<()> + Send + Sync + Clone + 'static,
149{
150 ClosureTableDefPreUpdateInterceptor::new(f)
151}
152
153pub struct TableDefPostUpdateContext<'a> {
156 pub pre: &'a TableDef,
157 pub post: &'a TableDef,
158}
159
160impl<'a> TableDefPostUpdateContext<'a> {
161 pub fn new(pre: &'a TableDef, post: &'a TableDef) -> Self {
162 Self {
163 pre,
164 post,
165 }
166 }
167}
168
169pub trait TableDefPostUpdateInterceptor: Send + Sync {
170 fn intercept<'a>(&self, ctx: &mut TableDefPostUpdateContext<'a>) -> Result<()>;
171}
172
173impl InterceptorChain<dyn TableDefPostUpdateInterceptor + Send + Sync> {
174 pub fn execute(&self, mut ctx: TableDefPostUpdateContext) -> Result<()> {
175 for interceptor in &self.interceptors {
176 interceptor.intercept(&mut ctx)?;
177 }
178 Ok(())
179 }
180}
181
182pub struct ClosureTableDefPostUpdateInterceptor<F>
183where
184 F: for<'a> Fn(&mut TableDefPostUpdateContext<'a>) -> Result<()> + Send + Sync,
185{
186 closure: F,
187}
188
189impl<F> ClosureTableDefPostUpdateInterceptor<F>
190where
191 F: for<'a> Fn(&mut TableDefPostUpdateContext<'a>) -> Result<()> + Send + Sync,
192{
193 pub fn new(closure: F) -> Self {
194 Self {
195 closure,
196 }
197 }
198}
199
200impl<F> Clone for ClosureTableDefPostUpdateInterceptor<F>
201where
202 F: for<'a> Fn(&mut TableDefPostUpdateContext<'a>) -> Result<()> + Send + Sync + Clone,
203{
204 fn clone(&self) -> Self {
205 Self {
206 closure: self.closure.clone(),
207 }
208 }
209}
210
211impl<F> TableDefPostUpdateInterceptor for ClosureTableDefPostUpdateInterceptor<F>
212where
213 F: for<'a> Fn(&mut TableDefPostUpdateContext<'a>) -> Result<()> + Send + Sync,
214{
215 fn intercept<'a>(&self, ctx: &mut TableDefPostUpdateContext<'a>) -> Result<()> {
216 (self.closure)(ctx)
217 }
218}
219
220pub fn table_def_post_update<F>(f: F) -> ClosureTableDefPostUpdateInterceptor<F>
221where
222 F: for<'a> Fn(&mut TableDefPostUpdateContext<'a>) -> Result<()> + Send + Sync + Clone + 'static,
223{
224 ClosureTableDefPostUpdateInterceptor::new(f)
225}
226
227pub struct TableDefPreDeleteContext<'a> {
230 pub pre: &'a TableDef,
231}
232
233impl<'a> TableDefPreDeleteContext<'a> {
234 pub fn new(pre: &'a TableDef) -> Self {
235 Self {
236 pre,
237 }
238 }
239}
240
241pub trait TableDefPreDeleteInterceptor: Send + Sync {
242 fn intercept<'a>(&self, ctx: &mut TableDefPreDeleteContext<'a>) -> Result<()>;
243}
244
245impl InterceptorChain<dyn TableDefPreDeleteInterceptor + Send + Sync> {
246 pub fn execute(&self, mut ctx: TableDefPreDeleteContext) -> Result<()> {
247 for interceptor in &self.interceptors {
248 interceptor.intercept(&mut ctx)?;
249 }
250 Ok(())
251 }
252}
253
254pub struct ClosureTableDefPreDeleteInterceptor<F>
255where
256 F: for<'a> Fn(&mut TableDefPreDeleteContext<'a>) -> Result<()> + Send + Sync,
257{
258 closure: F,
259}
260
261impl<F> ClosureTableDefPreDeleteInterceptor<F>
262where
263 F: for<'a> Fn(&mut TableDefPreDeleteContext<'a>) -> Result<()> + Send + Sync,
264{
265 pub fn new(closure: F) -> Self {
266 Self {
267 closure,
268 }
269 }
270}
271
272impl<F> Clone for ClosureTableDefPreDeleteInterceptor<F>
273where
274 F: for<'a> Fn(&mut TableDefPreDeleteContext<'a>) -> Result<()> + Send + Sync + Clone,
275{
276 fn clone(&self) -> Self {
277 Self {
278 closure: self.closure.clone(),
279 }
280 }
281}
282
283impl<F> TableDefPreDeleteInterceptor for ClosureTableDefPreDeleteInterceptor<F>
284where
285 F: for<'a> Fn(&mut TableDefPreDeleteContext<'a>) -> Result<()> + Send + Sync,
286{
287 fn intercept<'a>(&self, ctx: &mut TableDefPreDeleteContext<'a>) -> Result<()> {
288 (self.closure)(ctx)
289 }
290}
291
292pub fn table_def_pre_delete<F>(f: F) -> ClosureTableDefPreDeleteInterceptor<F>
293where
294 F: for<'a> Fn(&mut TableDefPreDeleteContext<'a>) -> Result<()> + Send + Sync + Clone + 'static,
295{
296 ClosureTableDefPreDeleteInterceptor::new(f)
297}