From c6621730eb4a597b3290d9c3c1623b516b386849 Mon Sep 17 00:00:00 2001 From: Santiago Carmuega Date: Thu, 15 Aug 2024 10:35:58 -0300 Subject: [PATCH] feat(interop): introduce field-mask context for u5c (#502) --- pallas-utxorpc/Cargo.toml | 1 + pallas-utxorpc/src/lib.rs | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/pallas-utxorpc/Cargo.toml b/pallas-utxorpc/Cargo.toml index 1c9073f..07701f2 100644 --- a/pallas-utxorpc/Cargo.toml +++ b/pallas-utxorpc/Cargo.toml @@ -17,6 +17,7 @@ pallas-codec = { version = "=0.29.0", path = "../pallas-codec" } pallas-crypto = { version = "=0.29.0", path = "../pallas-crypto" } utxorpc-spec = { version = "0.8.0" } +prost-types = "0.13.1" [dev-dependencies] hex = "0.4.3" diff --git a/pallas-utxorpc/src/lib.rs b/pallas-utxorpc/src/lib.rs index c641032..1f552f4 100644 --- a/pallas-utxorpc/src/lib.rs +++ b/pallas-utxorpc/src/lib.rs @@ -5,6 +5,7 @@ use pallas_crypto::hash::Hash; use pallas_primitives::{alonzo, babbage, conway}; use pallas_traverse as trv; +use prost_types::FieldMask; use trv::OriginalHash; pub use utxorpc_spec::utxorpc::v1alpha as spec; @@ -25,12 +26,22 @@ pub trait LedgerContext: Clone { #[derive(Default, Clone)] pub struct Mapper { ledger: Option, + mask: FieldMask, } impl Mapper { pub fn new(ledger: C) -> Self { Self { ledger: Some(ledger), + mask: FieldMask { paths: vec![] }, + } + } + + /// Creates a clone of this mapper using a custom field mask + pub fn masked(&self, mask: FieldMask) -> Self { + Self { + ledger: self.ledger.clone(), + mask, } } }