iota_indexer/models/macros.rs
1// Copyright (c) 2025 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4/// Implement `From` optimistic records to checkpoint records and vice
5/// versa.
6///
7/// # Example
8///
9/// ```ignore
10/// optimistic_from_into_checkpoint!(OptimisticEventEmitPackage, StoredEventEmitPackage, {
11/// event_sequence_number,
12/// package,
13/// sender,
14/// });
15/// ```
16macro_rules! optimistic_from_into_checkpoint {
17 ($optimistic_record:ident, $checkpoint_record:ident, { $($field:ident),* $(,)? }) => {
18 impl From<$optimistic_record> for $checkpoint_record {
19 fn from(item: $optimistic_record) -> Self {
20 Self {
21 tx_sequence_number: item.tx_insertion_order,
22 $($field: item.$field),*
23 }
24 }
25 }
26
27 impl From<$checkpoint_record> for $optimistic_record {
28 fn from(item: $checkpoint_record) -> Self {
29 Self {
30 tx_insertion_order: item.tx_sequence_number,
31 $($field: item.$field),*
32 }
33 }
34 }
35 };
36}