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