iota_indexer/models/
event_indices.rs

1// Copyright (c) Mysten Labs, Inc.
2// Modifications Copyright (c) 2024 IOTA Stiftung
3// SPDX-License-Identifier: Apache-2.0
4
5use 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}