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