reifydb_core/interceptor/
view_def.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4use std::marker::PhantomData;
5
6use crate::{define_api_function, define_closure_interceptor, define_interceptor, interface::ViewDef};
7
8// VIEW POST CREATE
9define_interceptor!(
10    context: ViewDefPostCreateContext<T>,
11    trait: ViewDefPostCreateInterceptor,
12    fields: {
13	txn: &'a mut T,
14	post: &'a ViewDef}
15);
16
17define_closure_interceptor!(
18	ClosureViewDefPostCreateInterceptor,
19	ViewDefPostCreateInterceptor,
20	ViewDefPostCreateContext,
21	with_transaction
22);
23
24define_api_function!(
25    view_def_post_create,
26    ClosureViewDefPostCreateInterceptor<T, F>,
27    ViewDefPostCreateContext<T>
28);
29
30// VIEW PRE UPDATE
31define_interceptor!(
32    context: ViewDefPreUpdateContext<T>,
33    trait: ViewDefPreUpdateInterceptor,
34    fields: {
35	txn: &'a mut T,
36	pre: &'a ViewDef}
37);
38
39define_closure_interceptor!(
40	ClosureViewDefPreUpdateInterceptor,
41	ViewDefPreUpdateInterceptor,
42	ViewDefPreUpdateContext,
43	with_transaction
44);
45
46define_api_function!(
47    view_def_pre_update,
48    ClosureViewDefPreUpdateInterceptor<T, F>,
49    ViewDefPreUpdateContext<T>
50);
51
52// VIEW POST UPDATE
53define_interceptor!(
54    context: ViewDefPostUpdateContext<T>,
55    trait: ViewDefPostUpdateInterceptor,
56    fields: {
57	txn: &'a mut T,
58	pre: &'a ViewDef,
59	post: &'a ViewDef}
60);
61
62define_closure_interceptor!(
63	ClosureViewDefPostUpdateInterceptor,
64	ViewDefPostUpdateInterceptor,
65	ViewDefPostUpdateContext,
66	with_transaction
67);
68
69define_api_function!(
70    view_def_post_update,
71    ClosureViewDefPostUpdateInterceptor<T, F>,
72    ViewDefPostUpdateContext<T>
73);
74
75// VIEW PRE DELETE
76define_interceptor!(
77    context: ViewDefPreDeleteContext<T>,
78    trait: ViewDefPreDeleteInterceptor,
79    fields: {
80	txn: &'a mut T,
81	pre: &'a ViewDef}
82);
83
84define_closure_interceptor!(
85	ClosureViewDefPreDeleteInterceptor,
86	ViewDefPreDeleteInterceptor,
87	ViewDefPreDeleteContext,
88	with_transaction
89);
90
91define_api_function!(
92    view_def_pre_delete,
93    ClosureViewDefPreDeleteInterceptor<T, F>,
94    ViewDefPreDeleteContext<T>
95);
96
97use crate::impl_register_interceptor;
98
99impl_register_interceptor!(
100    ClosureViewDefPostCreateInterceptor<T, F>,
101    ViewDefPostCreateContext<T>,
102    ViewDefPostCreateInterceptor,
103    view_def_post_create
104);
105
106impl_register_interceptor!(
107    ClosureViewDefPreUpdateInterceptor<T, F>,
108    ViewDefPreUpdateContext<T>,
109    ViewDefPreUpdateInterceptor,
110    view_def_pre_update
111);
112
113impl_register_interceptor!(
114    ClosureViewDefPostUpdateInterceptor<T, F>,
115    ViewDefPostUpdateContext<T>,
116    ViewDefPostUpdateInterceptor,
117    view_def_post_update
118);
119
120impl_register_interceptor!(
121    ClosureViewDefPreDeleteInterceptor<T, F>,
122    ViewDefPreDeleteContext<T>,
123    ViewDefPreDeleteInterceptor,
124    view_def_pre_delete
125);