reifydb_core/interceptor/
namespace_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::NamespaceDef};
7
8// NAMESPACE POST CREATE
9define_interceptor!(
10    context: NamespaceDefPostCreateContext<T>,
11    trait: NamespaceDefPostCreateInterceptor,
12    fields: {
13	txn: &'a mut T,
14	post: &'a NamespaceDef}
15);
16
17define_closure_interceptor!(
18	ClosureNamespaceDefPostCreateInterceptor,
19	NamespaceDefPostCreateInterceptor,
20	NamespaceDefPostCreateContext,
21	with_transaction
22);
23
24define_api_function!(
25    namespace_def_post_create,
26    ClosureNamespaceDefPostCreateInterceptor<T, F>,
27    NamespaceDefPostCreateContext<T>
28);
29
30// NAMESPACE PRE UPDATE
31define_interceptor!(
32    context: NamespaceDefPreUpdateContext<T>,
33    trait: NamespaceDefPreUpdateInterceptor,
34    fields: {
35	txn: &'a mut T,
36	pre: &'a NamespaceDef}
37);
38
39define_closure_interceptor!(
40	ClosureNamespaceDefPreUpdateInterceptor,
41	NamespaceDefPreUpdateInterceptor,
42	NamespaceDefPreUpdateContext,
43	with_transaction
44);
45
46define_api_function!(
47    namespace_def_pre_update,
48    ClosureNamespaceDefPreUpdateInterceptor<T, F>,
49    NamespaceDefPreUpdateContext<T>
50);
51
52// NAMESPACE POST UPDATE
53define_interceptor!(
54    context: NamespaceDefPostUpdateContext<T>,
55    trait: NamespaceDefPostUpdateInterceptor,
56    fields: {
57	txn: &'a mut T,
58	pre: &'a NamespaceDef,
59	post: &'a NamespaceDef}
60);
61
62define_closure_interceptor!(
63	ClosureNamespaceDefPostUpdateInterceptor,
64	NamespaceDefPostUpdateInterceptor,
65	NamespaceDefPostUpdateContext,
66	with_transaction
67);
68
69define_api_function!(
70    namespace_def_post_update,
71    ClosureNamespaceDefPostUpdateInterceptor<T, F>,
72    NamespaceDefPostUpdateContext<T>
73);
74
75// NAMESPACE PRE DELETE
76define_interceptor!(
77    context: NamespaceDefPreDeleteContext<T>,
78    trait: NamespaceDefPreDeleteInterceptor,
79    fields: {
80	txn: &'a mut T,
81	pre: &'a NamespaceDef}
82);
83
84define_closure_interceptor!(
85	ClosureNamespaceDefPreDeleteInterceptor,
86	NamespaceDefPreDeleteInterceptor,
87	NamespaceDefPreDeleteContext,
88	with_transaction
89);
90
91define_api_function!(
92    namespace_def_pre_delete,
93    ClosureNamespaceDefPreDeleteInterceptor<T, F>,
94    NamespaceDefPreDeleteContext<T>
95);
96
97use crate::impl_register_interceptor;
98
99impl_register_interceptor!(
100    ClosureNamespaceDefPostCreateInterceptor<T, F>,
101    NamespaceDefPostCreateContext<T>,
102    NamespaceDefPostCreateInterceptor,
103    namespace_def_post_create
104);
105
106impl_register_interceptor!(
107    ClosureNamespaceDefPreUpdateInterceptor<T, F>,
108    NamespaceDefPreUpdateContext<T>,
109    NamespaceDefPreUpdateInterceptor,
110    namespace_def_pre_update
111);
112
113impl_register_interceptor!(
114    ClosureNamespaceDefPostUpdateInterceptor<T, F>,
115    NamespaceDefPostUpdateContext<T>,
116    NamespaceDefPostUpdateInterceptor,
117    namespace_def_post_update
118);
119
120impl_register_interceptor!(
121    ClosureNamespaceDefPreDeleteInterceptor<T, F>,
122    NamespaceDefPreDeleteContext<T>,
123    NamespaceDefPreDeleteInterceptor,
124    namespace_def_pre_delete
125);