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, } } }