massa_ledger_exports/
mapping_grpc.rs1use crate::{LedgerEntry, LedgerEntryUpdate};
4
5use massa_models::types::{SetOrDelete, SetOrKeep};
6use massa_proto_rs::massa::model::v1 as grpc_model;
7
8impl From<LedgerEntry> for grpc_model::LedgerEntry {
9 fn from(value: LedgerEntry) -> Self {
10 grpc_model::LedgerEntry {
11 balance: Some(value.balance.into()),
12 bytecode: value.bytecode.0,
13 datastore: value
14 .datastore
15 .into_iter()
16 .map(|(key, value)| grpc_model::BytesMapFieldEntry { key, value })
17 .collect(),
18 }
19 }
20}
21
22impl From<LedgerEntryUpdate> for grpc_model::LedgerEntryUpdate {
23 fn from(value: LedgerEntryUpdate) -> Self {
24 grpc_model::LedgerEntryUpdate {
25 balance: match value.balance {
26 SetOrKeep::Set(value) => Some(grpc_model::SetOrKeepBalance {
27 change: Some(grpc_model::set_or_keep_balance::Change::Set(value.into())),
28 }),
29 SetOrKeep::Keep => Some(grpc_model::SetOrKeepBalance {
30 change: Some(grpc_model::set_or_keep_balance::Change::Keep(
31 grpc_model::Empty {},
32 )),
33 }),
34 },
35 bytecode: match value.bytecode {
36 SetOrKeep::Set(value) => Some(grpc_model::SetOrKeepBytes {
37 change: Some(grpc_model::set_or_keep_bytes::Change::Set(value.0)),
38 }),
39 SetOrKeep::Keep => Some(grpc_model::SetOrKeepBytes {
40 change: Some(grpc_model::set_or_keep_bytes::Change::Keep(
41 grpc_model::Empty {},
42 )),
43 }),
44 },
45 datastore: value
46 .datastore
47 .into_iter()
48 .map(|entry| match entry.1 {
49 SetOrDelete::Set(value) => grpc_model::SetOrDeleteDatastoreEntry {
50 change: Some(grpc_model::set_or_delete_datastore_entry::Change::Set(
51 grpc_model::BytesMapFieldEntry {
52 key: entry.0,
53 value,
54 },
55 )),
56 },
57 SetOrDelete::Delete => grpc_model::SetOrDeleteDatastoreEntry {
58 change: Some(grpc_model::set_or_delete_datastore_entry::Change::Delete(
59 grpc_model::Empty {},
60 )),
61 },
62 })
63 .collect(),
64 }
65 }
66}