1use diesel::prelude::*;
6
7use crate::{
8 schema::{
9 event_emit_module, event_emit_package, event_senders, event_struct_instantiation,
10 event_struct_module, event_struct_name, event_struct_package, optimistic_event_emit_module,
11 optimistic_event_emit_package, optimistic_event_senders,
12 optimistic_event_struct_instantiation, optimistic_event_struct_module,
13 optimistic_event_struct_name, optimistic_event_struct_package,
14 },
15 types::EventIndex,
16};
17
18#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
19#[diesel(table_name = event_emit_package)]
20pub struct StoredEventEmitPackage {
21 pub tx_sequence_number: i64,
22 pub event_sequence_number: i64,
23 pub package: Vec<u8>,
24 pub sender: Vec<u8>,
25}
26
27#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
28#[diesel(table_name = event_emit_module)]
29pub struct StoredEventEmitModule {
30 pub tx_sequence_number: i64,
31 pub event_sequence_number: i64,
32 pub package: Vec<u8>,
33 pub module: String,
34 pub sender: Vec<u8>,
35}
36
37#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
38#[diesel(table_name = event_senders)]
39pub struct StoredEventSenders {
40 pub tx_sequence_number: i64,
41 pub event_sequence_number: i64,
42 pub sender: Vec<u8>,
43}
44
45#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
46#[diesel(table_name = event_struct_package)]
47pub struct StoredEventStructPackage {
48 pub tx_sequence_number: i64,
49 pub event_sequence_number: i64,
50 pub package: Vec<u8>,
51 pub sender: Vec<u8>,
52}
53
54#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
55#[diesel(table_name = event_struct_module)]
56pub struct StoredEventStructModule {
57 pub tx_sequence_number: i64,
58 pub event_sequence_number: i64,
59 pub package: Vec<u8>,
60 pub module: String,
61 pub sender: Vec<u8>,
62}
63
64#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
65#[diesel(table_name = event_struct_name)]
66pub struct StoredEventStructName {
67 pub tx_sequence_number: i64,
68 pub event_sequence_number: i64,
69 pub package: Vec<u8>,
70 pub module: String,
71 pub type_name: String,
72 pub sender: Vec<u8>,
73}
74
75#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
76#[diesel(table_name = event_struct_instantiation)]
77pub struct StoredEventStructInstantiation {
78 pub tx_sequence_number: i64,
79 pub event_sequence_number: i64,
80 pub package: Vec<u8>,
81 pub module: String,
82 pub type_instantiation: String,
83 pub sender: Vec<u8>,
84}
85
86impl EventIndex {
87 pub fn split(
88 self: EventIndex,
89 ) -> (
90 StoredEventEmitPackage,
91 StoredEventEmitModule,
92 StoredEventSenders,
93 StoredEventStructPackage,
94 StoredEventStructModule,
95 StoredEventStructName,
96 StoredEventStructInstantiation,
97 ) {
98 let tx_sequence_number = self.tx_sequence_number as i64;
99 let event_sequence_number = self.event_sequence_number as i64;
100 (
101 StoredEventEmitPackage {
102 tx_sequence_number,
103 event_sequence_number,
104 package: self.emit_package.to_vec(),
105 sender: self.sender.to_vec(),
106 },
107 StoredEventEmitModule {
108 tx_sequence_number,
109 event_sequence_number,
110 package: self.emit_package.to_vec(),
111 module: self.emit_module.clone(),
112 sender: self.sender.to_vec(),
113 },
114 StoredEventSenders {
115 tx_sequence_number,
116 event_sequence_number,
117 sender: self.sender.to_vec(),
118 },
119 StoredEventStructPackage {
120 tx_sequence_number,
121 event_sequence_number,
122 package: self.type_package.to_vec(),
123 sender: self.sender.to_vec(),
124 },
125 StoredEventStructModule {
126 tx_sequence_number,
127 event_sequence_number,
128 package: self.type_package.to_vec(),
129 module: self.type_module.clone(),
130 sender: self.sender.to_vec(),
131 },
132 StoredEventStructName {
133 tx_sequence_number,
134 event_sequence_number,
135 package: self.type_package.to_vec(),
136 module: self.type_module.clone(),
137 type_name: self.type_name.clone(),
138 sender: self.sender.to_vec(),
139 },
140 StoredEventStructInstantiation {
141 tx_sequence_number,
142 event_sequence_number,
143 package: self.type_package.to_vec(),
144 module: self.type_module.clone(),
145 type_instantiation: self.type_instantiation.clone(),
146 sender: self.sender.to_vec(),
147 },
148 )
149 }
150}
151
152#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
153#[diesel(table_name = optimistic_event_emit_package)]
154pub struct OptimisticEventEmitPackage {
155 pub tx_insertion_order: i64,
156 pub event_sequence_number: i64,
157 pub package: Vec<u8>,
158 pub sender: Vec<u8>,
159}
160
161#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
162#[diesel(table_name = optimistic_event_emit_module)]
163pub struct OptimisticEventEmitModule {
164 pub tx_insertion_order: i64,
165 pub event_sequence_number: i64,
166 pub package: Vec<u8>,
167 pub module: String,
168 pub sender: Vec<u8>,
169}
170
171#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
172#[diesel(table_name = optimistic_event_senders)]
173pub struct OptimisticEventSenders {
174 pub tx_insertion_order: i64,
175 pub event_sequence_number: i64,
176 pub sender: Vec<u8>,
177}
178
179#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
180#[diesel(table_name = optimistic_event_struct_package)]
181pub struct OptimisticEventStructPackage {
182 pub tx_insertion_order: i64,
183 pub event_sequence_number: i64,
184 pub package: Vec<u8>,
185 pub sender: Vec<u8>,
186}
187
188#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
189#[diesel(table_name = optimistic_event_struct_module)]
190pub struct OptimisticEventStructModule {
191 pub tx_insertion_order: i64,
192 pub event_sequence_number: i64,
193 pub package: Vec<u8>,
194 pub module: String,
195 pub sender: Vec<u8>,
196}
197
198#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
199#[diesel(table_name = optimistic_event_struct_name)]
200pub struct OptimisticEventStructName {
201 pub tx_insertion_order: i64,
202 pub event_sequence_number: i64,
203 pub package: Vec<u8>,
204 pub module: String,
205 pub type_name: String,
206 pub sender: Vec<u8>,
207}
208
209#[derive(Queryable, Insertable, Selectable, Debug, Clone, Default)]
210#[diesel(table_name = optimistic_event_struct_instantiation)]
211pub struct OptimisticEventStructInstantiation {
212 pub tx_insertion_order: i64,
213 pub event_sequence_number: i64,
214 pub package: Vec<u8>,
215 pub module: String,
216 pub type_instantiation: String,
217 pub sender: Vec<u8>,
218}
219
220optimistic_from_into_checkpoint!(OptimisticEventEmitPackage, StoredEventEmitPackage, {
221 event_sequence_number,
222 package,
223 sender,
224});
225
226optimistic_from_into_checkpoint!(OptimisticEventEmitModule, StoredEventEmitModule, {
227 event_sequence_number,
228 package,
229 module,
230 sender,
231});
232
233optimistic_from_into_checkpoint!(OptimisticEventSenders, StoredEventSenders, {
234 event_sequence_number,
235 sender,
236});
237
238optimistic_from_into_checkpoint!(OptimisticEventStructPackage, StoredEventStructPackage, {
239 event_sequence_number,
240 package,
241 sender,
242});
243
244optimistic_from_into_checkpoint!(OptimisticEventStructModule, StoredEventStructModule, {
245 event_sequence_number,
246 package,
247 module,
248 sender,
249});
250
251optimistic_from_into_checkpoint!(OptimisticEventStructName, StoredEventStructName, {
252 event_sequence_number,
253 package,
254 module,
255 type_name,
256 sender,
257});
258
259optimistic_from_into_checkpoint!(OptimisticEventStructInstantiation, StoredEventStructInstantiation, {
260 event_sequence_number,
261 package,
262 module,
263 type_instantiation,
264 sender,
265});
266
267pub struct OptimisticEventIndices {
268 pub optimistic_event_emit_packages: Vec<OptimisticEventEmitPackage>,
269 pub optimistic_event_emit_modules: Vec<OptimisticEventEmitModule>,
270 pub optimistic_event_senders: Vec<OptimisticEventSenders>,
271 pub optimistic_event_struct_packages: Vec<OptimisticEventStructPackage>,
272 pub optimistic_event_struct_modules: Vec<OptimisticEventStructModule>,
273 pub optimistic_event_struct_names: Vec<OptimisticEventStructName>,
274 pub optimistic_event_struct_instantiations: Vec<OptimisticEventStructInstantiation>,
275}