From 20497e507f870d99d3810c0e3f3501be4e3bb683 Mon Sep 17 00:00:00 2001 From: Nikita Strygin Date: Tue, 20 Feb 2024 14:12:02 +0300 Subject: [PATCH] [refactor] #1981, #4195, #3068: Unify various event filter APIs, introduce a fluent builder API - All event filters implement Debug, Clone, Eq, Ord - All event filters (except TimeEventFilter) have a similar fluent builder API Event filter starts by accepting anything, with each method call limiting the accepted events - Structs with hidden fields provide getters & builder APIs to create them - Data event matchers are no longer prefixed with `By` to make them read better inside the `only_events` method call Signed-off-by: Nikita Strygin --- client/benches/tps/utils.rs | 4 +- client/src/client.rs | 6 +- .../integration/domain_owner_permissions.rs | 8 +- client/tests/integration/events/data.rs | 4 +- .../tests/integration/events/notification.rs | 42 +- client/tests/integration/events/pipeline.rs | 10 +- .../integration/triggers/by_call_trigger.rs | 97 ++- .../integration/triggers/data_trigger.rs | 21 +- .../integration/triggers/event_trigger.rs | 7 +- .../integration/triggers/time_trigger.rs | 4 +- .../integration/triggers/trigger_rollback.rs | 9 +- client_cli/src/main.rs | 2 +- configs/swarm/executor.wasm | Bin 927311 -> 928165 bytes core/src/smartcontracts/isi/mod.rs | 9 +- data_model/src/events/data/filters.rs | 722 +++++++++++++----- data_model/src/events/execute_trigger.rs | 49 +- data_model/src/events/mod.rs | 26 +- data_model/src/events/notification.rs | 72 +- data_model/src/events/pipeline.rs | 31 +- docs/source/references/schema.json | 100 +-- .../parity_scale_decoder/samples/trigger.bin | Bin 76 -> 77 bytes .../parity_scale_decoder/samples/trigger.json | 6 +- tools/parity_scale_decoder/src/main.rs | 7 +- 23 files changed, 836 insertions(+), 400 deletions(-) diff --git a/client/benches/tps/utils.rs b/client/benches/tps/utils.rs index b29ec8e56ae..ba6f83b22ef 100644 --- a/client/benches/tps/utils.rs +++ b/client/benches/tps/utils.rs @@ -173,8 +173,8 @@ impl MeasurerUnit { let listener = self.client.clone(); let (init_sender, init_receiver) = mpsc::channel(); let event_filter = PipelineEventFilter::new() - .entity_kind(PipelineEntityKind::Block) - .status_kind(PipelineStatusKind::Committed); + .from_entity_of_kind(PipelineEntityKind::Block) + .with_status(PipelineStatusKind::Committed); let blocks_expected = self.config.blocks as usize; let name = self.name; let handle = thread::spawn(move || -> Result<()> { diff --git a/client/src/client.rs b/client/src/client.rs index 123b6bee244..e84d3fc2485 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -603,7 +603,9 @@ impl Client { let mut event_iterator = { let event_iterator_result = tokio::time::timeout_at( deadline, - self.listen_for_events_async(PipelineEventFilter::new().hash(hash.into())), + self.listen_for_events_async( + PipelineEventFilter::new().from_entity_with_hash(hash.into()), + ), ) .await .map_err(Into::into) @@ -915,7 +917,7 @@ impl Client { /// - Forwards from [`events_api::AsyncEventStream::new`] pub async fn listen_for_events_async( &self, - event_filter: impl Into, + event_filter: impl Into + Send, ) -> Result { let event_filter = event_filter.into(); iroha_logger::trace!(?event_filter, "Async listening with"); diff --git a/client/tests/integration/domain_owner_permissions.rs b/client/tests/integration/domain_owner_permissions.rs index e0478762dbb..7c9a79319e7 100644 --- a/client/tests/integration/domain_owner_permissions.rs +++ b/client/tests/integration/domain_owner_permissions.rs @@ -307,11 +307,9 @@ fn domain_owner_trigger_permissions() -> Result<()> { trigger_instructions, Repeats::from(2_u32), bob_id, - // FIXME: due to restriction in `ExecuteTriggerEventFilter` it's impossible to execute trigger on behalf of multiple users - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - alice_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new().from_trigger(trigger_id.clone()), + ), ), )); test_client.submit_blocking(register_trigger)?; diff --git a/client/tests/integration/events/data.rs b/client/tests/integration/events/data.rs index 3136f369860..4250ff2b682 100644 --- a/client/tests/integration/events/data.rs +++ b/client/tests/integration/events/data.rs @@ -138,7 +138,7 @@ fn transaction_execution_should_produce_events( let listener = client.clone(); let (init_sender, init_receiver) = mpsc::channel(); let (event_sender, event_receiver) = mpsc::channel(); - let event_filter = DataEventFilter::ByAny; + let event_filter = DataEventFilter::Any; thread::spawn(move || -> Result<()> { let event_iterator = listener.listen_for_events(event_filter)?; init_sender.send(())?; @@ -182,7 +182,7 @@ fn produce_multiple_events() -> Result<()> { let listener = client.clone(); let (init_sender, init_receiver) = mpsc::channel(); let (event_sender, event_receiver) = mpsc::channel(); - let event_filter = DataEventFilter::ByAny; + let event_filter = DataEventFilter::Any; thread::spawn(move || -> Result<()> { let event_iterator = listener.listen_for_events(event_filter)?; init_sender.send(())?; diff --git a/client/tests/integration/events/notification.rs b/client/tests/integration/events/notification.rs index 8c817ad749c..d43f49f21c9 100644 --- a/client/tests/integration/events/notification.rs +++ b/client/tests/integration/events/notification.rs @@ -21,10 +21,11 @@ fn trigger_completion_success_should_produce_event() -> Result<()> { vec![InstructionBox::from(instruction)], Repeats::Indefinitely, asset_id.account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - asset_id.account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(asset_id.account_id), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -34,12 +35,12 @@ fn trigger_completion_success_should_produce_event() -> Result<()> { let thread_client = test_client.clone(); let (sender, receiver) = mpsc::channel(); let _handle = thread::spawn(move || -> Result<()> { - let mut event_it = thread_client.listen_for_events( - NotificationEventFilter::ByTriggerCompleted(TriggerCompletedEventFilter::new( - Some(trigger_id), - Some(TriggerCompletedOutcomeType::Success), - )), - )?; + let mut event_it = + thread_client.listen_for_events(NotificationEventFilter::ByTriggerCompleted( + TriggerCompletedEventFilter::new() + .from_trigger(trigger_id) + .with_outcome(TriggerCompletedOutcomeType::Success), + ))?; if event_it.next().is_some() { sender.send(())?; return Ok(()); @@ -69,10 +70,11 @@ fn trigger_completion_failure_should_produce_event() -> Result<()> { vec![InstructionBox::from(instruction)], Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -82,12 +84,12 @@ fn trigger_completion_failure_should_produce_event() -> Result<()> { let thread_client = test_client.clone(); let (sender, receiver) = mpsc::channel(); let _handle = thread::spawn(move || -> Result<()> { - let mut event_it = thread_client.listen_for_events( - NotificationEventFilter::ByTriggerCompleted(TriggerCompletedEventFilter::new( - Some(trigger_id), - Some(TriggerCompletedOutcomeType::Failure), - )), - )?; + let mut event_it = + thread_client.listen_for_events(NotificationEventFilter::ByTriggerCompleted( + TriggerCompletedEventFilter::new() + .from_trigger(trigger_id) + .with_outcome(TriggerCompletedOutcomeType::Failure), + ))?; if event_it.next().is_some() { sender.send(())?; return Ok(()); diff --git a/client/tests/integration/events/pipeline.rs b/client/tests/integration/events/pipeline.rs index 6f443b36186..83673beeb55 100644 --- a/client/tests/integration/events/pipeline.rs +++ b/client/tests/integration/events/pipeline.rs @@ -84,9 +84,9 @@ impl Checker { .listener .listen_for_events( PipelineEventFilter::new() - .entity_kind(PipelineEntityKind::Transaction) - .status_kind(status_kind) - .hash(*self.hash), + .from_entity_of_kind(PipelineEntityKind::Transaction) + .with_status(status_kind) + .from_entity_with_hash(*self.hash), ) .expect("Failed to create event iterator."); let event_result = event_iterator.next().expect("Stream closed"); @@ -101,8 +101,8 @@ fn committed_block_must_be_available_in_kura() { wait_for_genesis_committed(&[client.clone()], 0); let event_filter = PipelineEventFilter::new() - .entity_kind(PipelineEntityKind::Block) - .status_kind(PipelineStatusKind::Committed); + .from_entity_of_kind(PipelineEntityKind::Block) + .with_status(PipelineStatusKind::Committed); let mut event_iter = client .listen_for_events(event_filter) .expect("Failed to subscribe for events"); diff --git a/client/tests/integration/triggers/by_call_trigger.rs b/client/tests/integration/triggers/by_call_trigger.rs index f5f6a2675ac..8d00b074e1d 100644 --- a/client/tests/integration/triggers/by_call_trigger.rs +++ b/client/tests/integration/triggers/by_call_trigger.rs @@ -59,8 +59,11 @@ fn execute_trigger_should_produce_event() -> Result<()> { let thread_client = test_client.clone(); let (sender, receiver) = mpsc::channel(); let _handle = thread::spawn(move || -> Result<()> { - let mut event_it = thread_client - .listen_for_events(ExecuteTriggerEventFilter::new(trigger_id, account_id))?; + let mut event_it = thread_client.listen_for_events( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id) + .under_authority(account_id), + )?; if event_it.next().is_some() { sender.send(())?; return Ok(()); @@ -121,10 +124,11 @@ fn trigger_failure_should_not_cancel_other_triggers_execution() -> Result<()> { bad_trigger_instructions, Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - bad_trigger_id.clone(), - account_id.clone(), - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(bad_trigger_id.clone()) + .under_authority(account_id.clone()), + ), ), )); test_client.submit(register_bad_trigger)?; @@ -173,10 +177,11 @@ fn trigger_should_not_be_executed_with_zero_repeats_count() -> Result<()> { trigger_instructions, Repeats::from(1_u32), account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -234,10 +239,11 @@ fn trigger_should_be_able_to_modify_its_own_repeats_count() -> Result<()> { trigger_instructions, Repeats::from(1_u32), account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -274,10 +280,11 @@ fn unregister_trigger() -> Result<()> { Vec::::new(), Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id), + ), ), ); let register_trigger = Register::trigger(trigger.clone()); @@ -351,10 +358,11 @@ fn trigger_in_genesis_using_base64() -> Result<()> { .wrap_err("Can't deserialize wasm using base64")?, Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id.clone(), - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id.clone()), + ), ), ); @@ -401,10 +409,11 @@ fn trigger_should_be_able_to_modify_other_trigger() -> Result<()> { trigger_unregister_instructions, Repeats::from(1_u32), account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id_unregister.clone(), - account_id.clone(), - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id_unregister.clone()) + .under_authority(account_id.clone()), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -417,10 +426,11 @@ fn trigger_should_be_able_to_modify_other_trigger() -> Result<()> { trigger_should_be_unregistered_instructions, Repeats::from(1_u32), account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id_to_be_unregistered.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id_to_be_unregistered.clone()) + .under_authority(account_id), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -461,10 +471,11 @@ fn trigger_burn_repetitions() -> Result<()> { trigger_instructions, Repeats::from(1_u32), account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id), + ), ), )); test_client.submit_blocking(register_trigger)?; @@ -505,10 +516,11 @@ fn unregistering_one_of_two_triggers_with_identical_wasm_should_not_cause_origin wasm.clone(), Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id, - account_id.clone(), - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id) + .under_authority(account_id.clone()), + ), ), ) }; @@ -550,10 +562,11 @@ fn build_register_trigger_isi( trigger_instructions, Repeats::Indefinitely, asset_id.account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id, - asset_id.account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id) + .under_authority(asset_id.account_id), + ), ), )) } diff --git a/client/tests/integration/triggers/data_trigger.rs b/client/tests/integration/triggers/data_trigger.rs index f06e51fe4c2..f7040f228ad 100644 --- a/client/tests/integration/triggers/data_trigger.rs +++ b/client/tests/integration/triggers/data_trigger.rs @@ -20,10 +20,9 @@ fn must_execute_both_triggers() -> Result<()> { [instruction.clone()], Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::Data(DataEventFilter::ByAccount(AccountEventFilter { - id_matcher: None, - event_matcher: Some(AccountEventMatcher::ByCreated), - })), + TriggeringEventFilterBox::Data(DataEventFilter::Account( + AccountEventFilter::new().only_events(AccountEventMatcher::Created), + )), ), )); test_client.submit_blocking(register_trigger)?; @@ -34,10 +33,9 @@ fn must_execute_both_triggers() -> Result<()> { [instruction], Repeats::Indefinitely, account_id, - TriggeringEventFilterBox::Data(DataEventFilter::ByDomain(DomainEventFilter { - id_matcher: None, - event_matcher: Some(DomainEventMatcher::ByCreated), - })), + TriggeringEventFilterBox::Data(DataEventFilter::Domain( + DomainEventFilter::new().only_events(DomainEventMatcher::Created), + )), ), )); test_client.submit_blocking(register_trigger)?; @@ -88,10 +86,9 @@ fn domain_scoped_trigger_must_be_executed_only_on_events_in_its_domain() -> Resu [Mint::asset_quantity(1_u32, asset_id.clone())], Repeats::Indefinitely, account_id, - TriggeringEventFilterBox::Data(DataEventFilter::ByAccount(AccountEventFilter { - id_matcher: None, - event_matcher: Some(AccountEventMatcher::ByCreated), - })), + TriggeringEventFilterBox::Data(DataEventFilter::Account( + AccountEventFilter::new().only_events(AccountEventMatcher::Created), + )), ), )); test_client.submit_blocking(register_trigger)?; diff --git a/client/tests/integration/triggers/event_trigger.rs b/client/tests/integration/triggers/event_trigger.rs index fcc0717f8d4..67dcd9b4840 100644 --- a/client/tests/integration/triggers/event_trigger.rs +++ b/client/tests/integration/triggers/event_trigger.rs @@ -24,11 +24,8 @@ fn test_mint_asset_when_new_asset_definition_created() -> Result<()> { vec![instruction], Repeats::Indefinitely, account_id, - TriggeringEventFilterBox::Data(DataEventFilter::ByAssetDefinition( - AssetDefinitionEventFilter { - id_matcher: None, - event_matcher: Some(AssetDefinitionEventMatcher::ByCreated), - }, + TriggeringEventFilterBox::Data(DataEventFilter::AssetDefinition( + AssetDefinitionEventFilter::new().only_events(AssetDefinitionEventMatcher::Created), )), ), )); diff --git a/client/tests/integration/triggers/time_trigger.rs b/client/tests/integration/triggers/time_trigger.rs index 183822471d2..7dacdb6113e 100644 --- a/client/tests/integration/triggers/time_trigger.rs +++ b/client/tests/integration/triggers/time_trigger.rs @@ -270,8 +270,8 @@ fn get_block_committed_event_listener( client: &Client, ) -> Result>> { let block_filter = PipelineEventFilter::new() - .entity_kind(PipelineEntityKind::Block) - .status_kind(PipelineStatusKind::Committed); + .from_entity_of_kind(PipelineEntityKind::Block) + .with_status(PipelineStatusKind::Committed); client.listen_for_events(block_filter) } diff --git a/client/tests/integration/triggers/trigger_rollback.rs b/client/tests/integration/triggers/trigger_rollback.rs index 9125cb98eba..f5d79fe21ec 100644 --- a/client/tests/integration/triggers/trigger_rollback.rs +++ b/client/tests/integration/triggers/trigger_rollback.rs @@ -28,10 +28,11 @@ fn failed_trigger_revert() -> Result<()> { instructions, Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id, - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id), + ), ), )); let _ = client.submit_blocking(register_trigger); diff --git a/client_cli/src/main.rs b/client_cli/src/main.rs index be9a96ad5a1..8603f6cce75 100644 --- a/client_cli/src/main.rs +++ b/client_cli/src/main.rs @@ -315,7 +315,7 @@ mod events { fn run(self, context: &mut dyn RunContext) -> Result<()> { let filter = match self { Args::Pipeline => EventFilterBox::Pipeline(PipelineEventFilter::new()), - Args::Data => EventFilterBox::Data(DataEventFilter::ByAny), + Args::Data => EventFilterBox::Data(DataEventFilter::Any), Args::Notification => EventFilterBox::Notification(NotificationEventFilter::ByAny), }; listen(filter, context) diff --git a/configs/swarm/executor.wasm b/configs/swarm/executor.wasm index c56c4799d3c4b7f2a4326c07d1a18e4ac4d68c43..f084dd719cac6ce31a6a32eae1500d38cdad7693 100755 GIT binary patch delta 215128 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 delta 213955 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::new(), Repeats::Indefinitely, account_id.clone(), - TriggeringEventFilterBox::ExecuteTrigger(ExecuteTriggerEventFilter::new( - trigger_id.clone(), - account_id.clone(), - )), + TriggeringEventFilterBox::ExecuteTrigger( + ExecuteTriggerEventFilter::new() + .from_trigger(trigger_id.clone()) + .under_authority(account_id.clone()), + ), ), )); diff --git a/data_model/src/events/data/filters.rs b/data_model/src/events/data/filters.rs index cfcb20f9079..3fef9ae6e51 100644 --- a/data_model/src/events/data/filters.rs +++ b/data_model/src/events/data/filters.rs @@ -1,13 +1,12 @@ //! This module contains filters for data events. //! //! (almost) Each event in [`super::events`], there's two corresponding types in this module: -//! - `*EventMatcher` - matches one event kind (e.g. [`super::events::AccountEvent::Created`] with [`AccountEventMatcher::ByCreated`]) +//! - `*EventMatcher` - matches one event kind (e.g. [`super::events::AccountEvent::Created`] with [`AccountEventMatcher::Created`]) //! - `*EventFilter` - struct combining an optional id matcher and an optional event matcher -//! -//! The ones not having a filter are [`super::events::ConfigurationEvent`] and [`super::events::ExecutorEvent`] (TODO: why?). use core::fmt::Debug; +use getset::Getters; use iroha_data_model_derive::model; pub use self::model::*; @@ -18,206 +17,423 @@ pub mod model { use super::*; #[derive( - Debug, Clone, PartialEq, Eq, FromVariant, Decode, Encode, Deserialize, Serialize, IntoSchema, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + FromVariant, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, )] pub enum DataEventFilter { /// Matches any data events ([`DataEvent`]) - ByAny, - /// Matches only [`PeerEvent`]s - ByPeer(PeerEventFilter), - /// Matches only [`DomainEvent`]s - ByDomain(DomainEventFilter), - /// Matches only [`AccountEvent`]s - ByAccount(AccountEventFilter), - /// Matches only [`AssetEvent`]s - ByAsset(AssetEventFilter), - /// Matches only [`AssetDefinitionEvent`]s - ByAssetDefinition(AssetDefinitionEventFilter), - /// Matches only [`TriggerEvent`]s - ByTrigger(TriggerEventFilter), - /// Matches only [`RoleEvent`]s - ByRole(RoleEventFilter), + Any, + /// Matches [`PeerEvent`]s + Peer(PeerEventFilter), + /// Matches [`DomainEvent`]s + Domain(DomainEventFilter), + /// Matches [`AccountEvent`]s + Account(AccountEventFilter), + /// Matches [`AssetEvent`]s + Asset(AssetEventFilter), + /// Matches [`AssetDefinitionEvent`]s + AssetDefinition(AssetDefinitionEventFilter), + /// Matches [`TriggerEvent`]s + Trigger(TriggerEventFilter), + /// Matches [`RoleEvent`]s + Role(RoleEventFilter), // We didn't have filters for these events before the refactor. Should we? // Configuration(ConfigurationEventFilter), // Executor(ExecutorEventFilter), } /// An event filter for [`PeerEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct PeerEventFilter { - pub id_matcher: Option, - pub event_matcher: Option, + /// If specified matches only events originating from this peer + pub(super) id_matcher: Option, + /// If specified matches only events of this type + pub(super) event_matcher: Option, } /// An event matcher for [`PeerEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum PeerEventMatcher { - /// Matches only [`PeerEvent::Added`] - ByAdded, - /// Matches only [`PeerEvent::Removed`] - ByRemoved, + /// Matches [`PeerEvent::Added`] + Added, + /// Matches [`PeerEvent::Removed`] + Removed, } /// An event filter for [`DomainEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct DomainEventFilter { /// If specified matches only events originating from this domain - pub id_matcher: Option, + pub(super) id_matcher: Option, /// If specified matches only events of this type - pub event_matcher: Option, + pub(super) event_matcher: Option, } /// An event matcher for [`DomainEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum DomainEventMatcher { - /// Matches only [`DomainEvent::Created`] - ByCreated, - /// Matches only [`DomainEvent::Deleted`] - ByDeleted, - /// Matches only [`DomainEvent::MetadataInserted`] - ByMetadataInserted, - /// Matches only [`DomainEvent::MetadataRemoved`] - ByMetadataRemoved, - /// Matches only [`DomainEvent::OwnerChanged`] - ByOwnerChanged, + /// Matches [`DomainEvent::Created`] + Created, + /// Matches [`DomainEvent::Deleted`] + Deleted, + /// Matches [`DomainEvent::MetadataInserted`] + MetadataInserted, + /// Matches [`DomainEvent::MetadataRemoved`] + MetadataRemoved, + /// Matches [`DomainEvent::OwnerChanged`] + OwnerChanged, // we allow filtering for nested events, but if you need to specify an id matcher for, for example, AccountId, you need to use AccountFilter - /// Matches only [`DomainEvent::Account`] - ByAccountAny, - /// Matches only [`DomainEvent::AssetDefinition`] - ByAssetDefinitionAny, + /// Matches any [`DomainEvent::Account`]. To further filter by account events, use [`AccountEventFilter`] + AnyAccount, + /// Matches any [`DomainEvent::AssetDefinition`]. To further filter by asset definition events, use [`AssetDefinitionEventFilter`] + AnyAssetDefinition, } /// An event filter for [`AccountEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct AccountEventFilter { /// If specified matches only events originating from this account - pub id_matcher: Option, + pub(super) id_matcher: Option, /// If specified matches only events of this type - pub event_matcher: Option, + pub(super) event_matcher: Option, } /// An event matcher for [`AccountEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum AccountEventMatcher { - /// Matches only [`AccountEvent::Created`] - ByCreated, - /// Matches only [`AccountEvent::Deleted`] - ByDeleted, - /// Matches only [`AccountEvent::AuthenticationAdded`] - ByAuthenticationAdded, - /// Matches only [`AccountEvent::AuthenticationRemoved`] - ByAuthenticationRemoved, - /// Matches only [`AccountEvent::PermissionAdded`] - ByPermissionAdded, - /// Matches only [`AccountEvent::PermissionRemoved`] - ByPermissionRemoved, - /// Matches only [`AccountEvent::RoleRevoked`] - ByRoleRevoked, - /// Matches only [`AccountEvent::RoleGranted`] - ByRoleGranted, - /// Matches only [`AccountEvent::MetadataInserted`] - ByMetadataInserted, - /// Matches only [`AccountEvent::MetadataRemoved`] - ByMetadataRemoved, + /// Matches [`AccountEvent::Created`] + Created, + /// Matches [`AccountEvent::Deleted`] + Deleted, + /// Matches [`AccountEvent::AuthenticationAdded`] + AuthenticationAdded, + /// Matches [`AccountEvent::AuthenticationRemoved`] + AuthenticationRemoved, + /// Matches [`AccountEvent::PermissionAdded`] + PermissionAdded, + /// Matches [`AccountEvent::PermissionRemoved`] + PermissionRemoved, + /// Matches [`AccountEvent::RoleRevoked`] + RoleRevoked, + /// Matches [`AccountEvent::RoleGranted`] + RoleGranted, + /// Matches [`AccountEvent::MetadataInserted`] + MetadataInserted, + /// Matches [`AccountEvent::MetadataRemoved`] + MetadataRemoved, // nested events - /// Matches only [`AccountEvent::Asset`] - ByAssetAny, + /// Matches any [`AccountEvent::Asset`]. To further filter by asset events, use [`AssetEventFilter`] + AnyAsset, } /// An event filter for [`AssetEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct AssetEventFilter { /// If specified matches only events originating from this asset - pub id_matcher: Option, + pub(super) id_matcher: Option, /// If specified matches only events of this type - pub event_matcher: Option, + pub(super) event_matcher: Option, } /// An event matcher for [`AssetEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum AssetEventMatcher { - /// Matches only [`AssetEvent::Created`] - ByCreated, - /// Matches only [`AssetEvent::Deleted`] - ByDeleted, - /// Matches only [`AssetEvent::Added`] - ByAdded, - /// Matches only [`AssetEvent::Removed`] - ByRemoved, - /// Matches only [`AssetEvent::MetadataInserted`] - ByMetadataInserted, - /// Matches only [`AssetEvent::MetadataRemoved`] - ByMetadataRemoved, + /// Matches [`AssetEvent::Created`] + Created, + /// Matches [`AssetEvent::Deleted`] + Deleted, + /// Matches [`AssetEvent::Added`] + Added, + /// Matches [`AssetEvent::Removed`] + Removed, + /// Matches [`AssetEvent::MetadataInserted`] + MetadataInserted, + /// Matches [`AssetEvent::MetadataRemoved`] + MetadataRemoved, } /// An event filter for [`AssetDefinitionEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct AssetDefinitionEventFilter { /// If specified matches only events originating from this asset definition - pub id_matcher: Option, + pub(super) id_matcher: Option, /// If specified matches only events of this type - pub event_matcher: Option, + pub(super) event_matcher: Option, } /// An event matcher for [`AssetDefinitionEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum AssetDefinitionEventMatcher { - /// Matches only [`AssetDefinitionEvent::Created`] - ByCreated, - /// Matches only [`AssetDefinitionEvent::MintabilityChanged`] - ByMintabilityChanged, - /// Matches only [`AssetDefinitionEvent::OwnerChanged`] - ByOwnerChanged, - /// Matches only [`AssetDefinitionEvent::Deleted`] - ByDeleted, - /// Matches only [`AssetDefinitionEvent::MetadataInserted`] - ByMetadataInserted, - /// Matches only [`AssetDefinitionEvent::MetadataRemoved`] - ByMetadataRemoved, - /// Matches only [`AssetDefinitionEvent::TotalQuantityChanged`] - ByTotalQuantityChanged, + /// Matches [`AssetDefinitionEvent::Created`] + Created, + /// Matches [`AssetDefinitionEvent::MintabilityChanged`] + MintabilityChanged, + /// Matches [`AssetDefinitionEvent::OwnerChanged`] + OwnerChanged, + /// Matches [`AssetDefinitionEvent::Deleted`] + Deleted, + /// Matches [`AssetDefinitionEvent::MetadataInserted`] + MetadataInserted, + /// Matches [`AssetDefinitionEvent::MetadataRemoved`] + MetadataRemoved, + /// Matches [`AssetDefinitionEvent::TotalQuantityChanged`] + TotalQuantityChanged, } /// An event filter for [`TriggerEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct TriggerEventFilter { /// If specified matches only events originating from this trigger - pub id_matcher: Option, + pub(super) id_matcher: Option, /// If specified matches only events of this type - pub event_matcher: Option, + pub(super) event_matcher: Option, } /// An event matcher for [`TriggerEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum TriggerEventMatcher { - /// Matches only [`TriggerEvent::Created`] - ByCreated, - /// Matches only [`TriggerEvent::Deleted`] - ByDeleted, - /// Matches only [`TriggerEvent::Extended`] - ByExtended, - /// Matches only [`TriggerEvent::Shortened`] - ByShortened, + /// Matches [`TriggerEvent::Created`] + Created, + /// Matches [`TriggerEvent::Deleted`] + Deleted, + /// Matches [`TriggerEvent::Extended`] + Extended, + /// Matches [`TriggerEvent::Shortened`] + Shortened, } /// An event filter for [`RoleEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Default, + Getters, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub struct RoleEventFilter { /// If specified matches only events originating from this role - pub id_matcher: Option, + pub(super) id_matcher: Option, /// If specified matches only events of this type - pub event_matcher: Option, + pub(super) event_matcher: Option, } /// An event matcher for [`RoleEvent`]s - #[derive(Debug, Clone, PartialEq, Eq, Decode, Encode, Deserialize, Serialize, IntoSchema)] + #[derive( + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, + )] pub enum RoleEventMatcher { - /// Matches only [`RoleEvent::Created`] - ByCreated, - /// Matches only [`RoleEvent::Deleted`] - ByDeleted, - /// Matches only [`RoleEvent::PermissionRemoved`] - ByPermissionRemoved, + /// Matches [`RoleEvent::Created`] + Created, + /// Matches [`RoleEvent::Deleted`] + Deleted, + /// Matches [`RoleEvent::PermissionRemoved`] + PermissionRemoved, + } +} + +impl PeerEventFilter { + /// Creates a new [`PeerEventFilter`] accepting all [`PeerEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`PeerEventFilter`] to accept only [`PeerEvent`]s originating from ids matching `id_matcher`. + pub fn only_id(mut self, id_matcher: PeerId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`PeerEventFilter`] to accept only [`PeerEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: PeerEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self } } @@ -228,8 +444,6 @@ impl EventFilter for PeerEventFilter { fn matches(&self, event: &Self::Event) -> bool { use PeerEventMatcher::*; - use super::PeerEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -237,8 +451,8 @@ impl EventFilter for PeerEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByAdded, Added(_)) => true, - (ByRemoved, Removed(_)) => true, + (Added, PeerEvent::Added(_)) => true, + (Removed, PeerEvent::Removed(_)) => true, _ => false, } } else { @@ -247,6 +461,28 @@ impl EventFilter for PeerEventFilter { } } +impl DomainEventFilter { + /// Creates a new [`DomainEventFilter`] accepting all [`DomainEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`DomainEventFilter`] to accept only [`DomainEvent`]s originating from ids matching `id_matcher`. + pub fn only_id(mut self, id_matcher: DomainId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`DomainEventFilter`] to accept only [`DomainEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: DomainEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self + } +} + #[cfg(feature = "transparent_api")] impl EventFilter for DomainEventFilter { type Event = super::DomainEvent; @@ -254,8 +490,6 @@ impl EventFilter for DomainEventFilter { fn matches(&self, event: &Self::Event) -> bool { use DomainEventMatcher::*; - use super::DomainEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -263,13 +497,13 @@ impl EventFilter for DomainEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByCreated, Created(_)) => true, - (ByDeleted, Deleted(_)) => true, - (ByMetadataInserted, MetadataInserted(_)) => true, - (ByMetadataRemoved, MetadataRemoved(_)) => true, - (ByOwnerChanged, OwnerChanged(_)) => true, - (ByAccountAny, Account(_)) => true, - (ByAssetDefinitionAny, AssetDefinition(_)) => true, + (Created, DomainEvent::Created(_)) => true, + (Deleted, DomainEvent::Deleted(_)) => true, + (MetadataInserted, DomainEvent::MetadataInserted(_)) => true, + (MetadataRemoved, DomainEvent::MetadataRemoved(_)) => true, + (OwnerChanged, DomainEvent::OwnerChanged(_)) => true, + (AnyAccount, DomainEvent::Account(_)) => true, + (AnyAssetDefinition, DomainEvent::AssetDefinition(_)) => true, _ => false, } } else { @@ -278,6 +512,28 @@ impl EventFilter for DomainEventFilter { } } +impl AccountEventFilter { + /// Creates a new [`AccountEventFilter`] accepting all [`AccountEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`AccountEventFilter`] to accept only [`AccountEvent`]s originating from ids matching `id_matcher`. + pub fn only_id(mut self, id_matcher: AccountId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`AccountEventFilter`] to accept only [`AccountEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: AccountEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self + } +} + #[cfg(feature = "transparent_api")] impl super::EventFilter for AccountEventFilter { type Event = super::AccountEvent; @@ -285,8 +541,6 @@ impl super::EventFilter for AccountEventFilter { fn matches(&self, event: &Self::Event) -> bool { use AccountEventMatcher::*; - use super::AccountEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -294,17 +548,17 @@ impl super::EventFilter for AccountEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByCreated, Created(_)) => true, - (ByDeleted, Deleted(_)) => true, - (ByAuthenticationAdded, AuthenticationAdded(_)) => true, - (ByAuthenticationRemoved, AuthenticationRemoved(_)) => true, - (ByPermissionAdded, PermissionAdded(_)) => true, - (ByPermissionRemoved, PermissionRemoved(_)) => true, - (ByRoleRevoked, RoleRevoked(_)) => true, - (ByRoleGranted, RoleGranted(_)) => true, - (ByMetadataInserted, MetadataInserted(_)) => true, - (ByMetadataRemoved, MetadataRemoved(_)) => true, - (ByAssetAny, Asset(_)) => true, + (Created, AccountEvent::Created(_)) => true, + (Deleted, AccountEvent::Deleted(_)) => true, + (AuthenticationAdded, AccountEvent::AuthenticationAdded(_)) => true, + (AuthenticationRemoved, AccountEvent::AuthenticationRemoved(_)) => true, + (PermissionAdded, AccountEvent::PermissionAdded(_)) => true, + (PermissionRemoved, AccountEvent::PermissionRemoved(_)) => true, + (RoleRevoked, AccountEvent::RoleRevoked(_)) => true, + (RoleGranted, AccountEvent::RoleGranted(_)) => true, + (MetadataInserted, AccountEvent::MetadataInserted(_)) => true, + (MetadataRemoved, AccountEvent::MetadataRemoved(_)) => true, + (AnyAsset, AccountEvent::Asset(_)) => true, _ => false, } } else { @@ -313,6 +567,28 @@ impl super::EventFilter for AccountEventFilter { } } +impl AssetEventFilter { + /// Creates a new [`AssetEventFilter`] accepting all [`AssetEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`AssetEventFilter`] to accept only [`AssetEvent`]s originating from ids matching `id_matcher`. + pub fn only_from(mut self, id_matcher: AssetId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`AssetEventFilter`] to accept only [`AssetEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: AssetEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self + } +} + #[cfg(feature = "transparent_api")] impl super::EventFilter for AssetEventFilter { type Event = super::AssetEvent; @@ -320,8 +596,6 @@ impl super::EventFilter for AssetEventFilter { fn matches(&self, event: &Self::Event) -> bool { use AssetEventMatcher::*; - use super::AssetEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -329,12 +603,12 @@ impl super::EventFilter for AssetEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByCreated, Created(_)) => true, - (ByDeleted, Deleted(_)) => true, - (ByAdded, Added(_)) => true, - (ByRemoved, Removed(_)) => true, - (ByMetadataInserted, MetadataInserted(_)) => true, - (ByMetadataRemoved, MetadataRemoved(_)) => true, + (Created, AssetEvent::Created(_)) => true, + (Deleted, AssetEvent::Deleted(_)) => true, + (Added, AssetEvent::Added(_)) => true, + (Removed, AssetEvent::Removed(_)) => true, + (MetadataInserted, AssetEvent::MetadataInserted(_)) => true, + (MetadataRemoved, AssetEvent::MetadataRemoved(_)) => true, _ => false, } } else { @@ -343,6 +617,28 @@ impl super::EventFilter for AssetEventFilter { } } +impl AssetDefinitionEventFilter { + /// Creates a new [`AssetDefinitionEventFilter`] accepting all [`AssetDefinitionEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`AssetDefinitionEventFilter`] to accept only [`AssetDefinitionEvent`]s originating from ids matching `id_matcher`. + pub fn only_from(mut self, id_matcher: AssetDefinitionId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`AssetDefinitionEventFilter`] to accept only [`AssetDefinitionEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: AssetDefinitionEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self + } +} + #[cfg(feature = "transparent_api")] impl super::EventFilter for AssetDefinitionEventFilter { type Event = super::AssetDefinitionEvent; @@ -350,8 +646,6 @@ impl super::EventFilter for AssetDefinitionEventFilter { fn matches(&self, event: &Self::Event) -> bool { use AssetDefinitionEventMatcher::*; - use super::AssetDefinitionEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -359,13 +653,13 @@ impl super::EventFilter for AssetDefinitionEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByCreated, Created(_)) => true, - (ByMintabilityChanged, MintabilityChanged(_)) => true, - (ByOwnerChanged, OwnerChanged(_)) => true, - (ByDeleted, Deleted(_)) => true, - (ByMetadataInserted, MetadataInserted(_)) => true, - (ByMetadataRemoved, MetadataRemoved(_)) => true, - (ByTotalQuantityChanged, TotalQuantityChanged(_)) => true, + (Created, AssetDefinitionEvent::Created(_)) => true, + (MintabilityChanged, AssetDefinitionEvent::MintabilityChanged(_)) => true, + (OwnerChanged, AssetDefinitionEvent::OwnerChanged(_)) => true, + (Deleted, AssetDefinitionEvent::Deleted(_)) => true, + (MetadataInserted, AssetDefinitionEvent::MetadataInserted(_)) => true, + (MetadataRemoved, AssetDefinitionEvent::MetadataRemoved(_)) => true, + (TotalQuantityChanged, AssetDefinitionEvent::TotalQuantityChanged(_)) => true, _ => false, } } else { @@ -374,6 +668,28 @@ impl super::EventFilter for AssetDefinitionEventFilter { } } +impl TriggerEventFilter { + /// Creates a new [`TriggerEventFilter`] accepting all [`TriggerEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`TriggerEventFilter`] to accept only [`TriggerEvent`]s originating from ids matching `id_matcher`. + pub fn only_from(mut self, id_matcher: TriggerId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`TriggerEventFilter`] to accept only [`TriggerEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: TriggerEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self + } +} + #[cfg(feature = "transparent_api")] impl super::EventFilter for TriggerEventFilter { type Event = super::TriggerEvent; @@ -381,8 +697,6 @@ impl super::EventFilter for TriggerEventFilter { fn matches(&self, event: &Self::Event) -> bool { use TriggerEventMatcher::*; - use super::TriggerEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -390,10 +704,10 @@ impl super::EventFilter for TriggerEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByCreated, Created(_)) => true, - (ByDeleted, Deleted(_)) => true, - (ByExtended, Extended(_)) => true, - (ByShortened, Shortened(_)) => true, + (Created, TriggerEvent::Created(_)) => true, + (Deleted, TriggerEvent::Deleted(_)) => true, + (Extended, TriggerEvent::Extended(_)) => true, + (Shortened, TriggerEvent::Shortened(_)) => true, _ => false, } } else { @@ -402,6 +716,28 @@ impl super::EventFilter for TriggerEventFilter { } } +impl RoleEventFilter { + /// Creates a new [`RoleEventFilter`] accepting all [`RoleEvent`]s. + pub const fn new() -> Self { + Self { + id_matcher: None, + event_matcher: None, + } + } + + /// Modifies a [`RoleEventFilter`] to accept only [`RoleEvent`]s originating from ids matching `id_matcher`. + pub fn only_from(mut self, id_matcher: RoleId) -> Self { + self.id_matcher = Some(id_matcher); + self + } + + /// Modifies a [`RoleEventFilter`] to accept only [`RoleEvent`]s of types matching `event_matcher`. + pub const fn only_events(mut self, event_matcher: RoleEventMatcher) -> Self { + self.event_matcher = Some(event_matcher); + self + } +} + #[cfg(feature = "transparent_api")] impl super::EventFilter for RoleEventFilter { type Event = super::RoleEvent; @@ -409,8 +745,6 @@ impl super::EventFilter for RoleEventFilter { fn matches(&self, event: &Self::Event) -> bool { use RoleEventMatcher::*; - use super::RoleEvent::*; - if let Some(id_matcher) = &self.id_matcher { if id_matcher != event.origin_id() { return false; @@ -418,9 +752,9 @@ impl super::EventFilter for RoleEventFilter { } if let Some(event_matcher) = &self.event_matcher { match (event_matcher, event) { - (ByCreated, Created(_)) => true, - (ByDeleted, Deleted(_)) => true, - (ByPermissionRemoved, PermissionRemoved(_)) => true, + (Created, RoleEvent::Created(_)) => true, + (Deleted, RoleEvent::Deleted(_)) => true, + (PermissionRemoved, RoleEvent::PermissionRemoved(_)) => true, _ => false, } } else { @@ -434,22 +768,24 @@ impl EventFilter for DataEventFilter { type Event = DataEvent; fn matches(&self, event: &DataEvent) -> bool { - use DataEvent::*; use DataEventFilter::*; match (self, event) { - (ByAny, _) => true, - (ByPeer(filter), Peer(event)) => filter.matches(event), - (ByDomain(filter), Domain(event)) => filter.matches(event), - (ByAccount(filter), Domain(DomainEvent::Account(event))) => filter.matches(event), - (ByAsset(filter), Domain(DomainEvent::Account(AccountEvent::Asset(event)))) => { + (Any, _) => true, + (Peer(filter), DataEvent::Peer(event)) => filter.matches(event), + (Domain(filter), DataEvent::Domain(event)) => filter.matches(event), + (Account(filter), DataEvent::Domain(DomainEvent::Account(event))) => { filter.matches(event) } - (ByAssetDefinition(filter), Domain(DomainEvent::AssetDefinition(event))) => { + ( + Asset(filter), + DataEvent::Domain(DomainEvent::Account(AccountEvent::Asset(event))), + ) => filter.matches(event), + (AssetDefinition(filter), DataEvent::Domain(DomainEvent::AssetDefinition(event))) => { filter.matches(event) } - (ByTrigger(filter), Trigger(event)) => filter.matches(event), - (ByRole(filter), Role(event)) => filter.matches(event), + (Trigger(filter), DataEvent::Trigger(event)) => filter.matches(event), + (Role(filter), DataEvent::Role(event)) => filter.matches(event), _ => false, } } @@ -520,15 +856,15 @@ mod tests { DomainEvent::Account(AccountEvent::Asset(AssetEvent::Created(asset))).into(); // test how the differently nested filters with with the events - let domain_filter = DataEventFilter::ByDomain(DomainEventFilter { + let domain_filter = DataEventFilter::Domain(DomainEventFilter { id_matcher: Some(domain_id), event_matcher: None, }); - let account_filter = DataEventFilter::ByAccount(AccountEventFilter { + let account_filter = DataEventFilter::Account(AccountEventFilter { id_matcher: Some(account_id), event_matcher: None, }); - let asset_filter = DataEventFilter::ByAsset(AssetEventFilter { + let asset_filter = DataEventFilter::Asset(AssetEventFilter { id_matcher: Some(asset_id), event_matcher: None, }); diff --git a/data_model/src/events/execute_trigger.rs b/data_model/src/events/execute_trigger.rs index 4825c1141b2..bb085224f9a 100644 --- a/data_model/src/events/execute_trigger.rs +++ b/data_model/src/events/execute_trigger.rs @@ -1,6 +1,5 @@ //! Trigger execution event and filter -use derive_more::Constructor; use getset::Getters; use iroha_data_model_derive::model; @@ -44,7 +43,8 @@ pub mod model { Ord, PartialEq, Eq, - Constructor, + Default, + Getters, Decode, Encode, Deserialize, @@ -53,9 +53,37 @@ pub mod model { )] pub struct ExecuteTriggerEventFilter { /// Id of trigger catch executions of - pub(super) trigger_id: TriggerId, + pub(super) trigger_id: Option, /// Authority of user who owns trigger - pub(super) authority: AccountId, + pub(super) authority: Option, + } +} + +impl ExecuteTriggerEventFilter { + /// Creates a new [`ExecuteTriggerEventFilter`] accepting all [`ExecuteTriggerEvent`]s + #[must_use] + #[inline] + pub const fn new() -> Self { + Self { + trigger_id: None, + authority: None, + } + } + + /// Modifies a [`ExecuteTriggerEventFilter`] to accept only [`ExecuteTriggerEvent`]s originating from a specific trigger + #[must_use] + #[inline] + pub fn from_trigger(mut self, trigger_id: TriggerId) -> Self { + self.trigger_id = Some(trigger_id); + self + } + + /// Modifies a [`ExecuteTriggerEventFilter`] to accept only [`ExecuteTriggerEvent`]s from triggers executed under specific authority + #[must_use] + #[inline] + pub fn under_authority(mut self, authority: AccountId) -> Self { + self.authority = Some(authority); + self } } @@ -67,7 +95,18 @@ impl EventFilter for ExecuteTriggerEventFilter { /// /// Event considered as matched if trigger ids are equal fn matches(&self, event: &ExecuteTriggerEvent) -> bool { - self.trigger_id == event.trigger_id && self.authority == event.authority + if let Some(trigger_id) = &self.trigger_id { + if trigger_id != &event.trigger_id { + return false; + } + } + if let Some(authority) = &self.authority { + if authority != &event.authority { + return false; + } + } + + true } } diff --git a/data_model/src/events/mod.rs b/data_model/src/events/mod.rs index d6a42cf050d..8c3517ecdcc 100644 --- a/data_model/src/events/mod.rs +++ b/data_model/src/events/mod.rs @@ -68,7 +68,18 @@ pub mod model { /// Event filter. #[allow(variant_size_differences)] #[derive( - Debug, Clone, PartialEq, Eq, FromVariant, Decode, Encode, Deserialize, Serialize, IntoSchema, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + FromVariant, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, )] // TODO: Temporarily made opaque #[ffi_type(opaque)] @@ -88,7 +99,18 @@ pub mod model { /// Event filter which could be attached to trigger. #[allow(variant_size_differences)] #[derive( - Debug, Clone, PartialEq, Eq, FromVariant, Decode, Encode, Deserialize, Serialize, IntoSchema, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Ord, + FromVariant, + Decode, + Encode, + Deserialize, + Serialize, + IntoSchema, )] // TODO: Temporarily made opaque #[ffi_type(opaque)] diff --git a/data_model/src/events/notification.rs b/data_model/src/events/notification.rs index 3eb484095b9..50f9e9c15fc 100644 --- a/data_model/src/events/notification.rs +++ b/data_model/src/events/notification.rs @@ -128,7 +128,7 @@ pub mod model { Eq, PartialOrd, Ord, - Constructor, + Default, Getters, Decode, Encode, @@ -139,8 +139,8 @@ pub mod model { #[ffi_type] #[getset(get = "pub")] pub struct TriggerCompletedEventFilter { - trigger_id: Option, - outcome_type: Option, + pub(super) trigger_id: Option, + pub(super) outcome_type: Option, } } @@ -160,6 +160,34 @@ impl super::EventFilter for NotificationEventFilter { } } +impl TriggerCompletedEventFilter { + /// Creates a new [`TriggerCompletedEventFilter`] accepting all [`TriggerCompletedEvent`]s + #[must_use] + #[inline] + pub const fn new() -> Self { + Self { + trigger_id: None, + outcome_type: None, + } + } + + /// Modifies a [`TriggerCompletedEventFilter`] to accept only [`TriggerCompletedEvent`]s originating from a specific trigger + #[must_use] + #[inline] + pub fn from_trigger(mut self, trigger_id: TriggerId) -> Self { + self.trigger_id = Some(trigger_id); + self + } + + /// Modifies a [`TriggerCompletedEventFilter`] to accept only [`TriggerCompletedEvent`]s with a specific outcome + #[must_use] + #[inline] + pub const fn with_outcome(mut self, outcome_type: TriggerCompletedOutcomeType) -> Self { + self.outcome_type = Some(outcome_type); + self + } +} + #[cfg(feature = "transparent_api")] impl super::EventFilter for TriggerCompletedEventFilter { type Event = TriggerCompletedEvent; @@ -220,69 +248,65 @@ mod tests { let event_2_success = TriggerCompletedEvent::new(trigger_id_2.clone(), TriggerCompletedOutcome::Success); - let filter_accept_all = TriggerCompletedEventFilter::new(None, None); + let filter_accept_all = TriggerCompletedEventFilter::new(); assert!(filter_accept_all.matches(&event_1_failure)); assert!(filter_accept_all.matches(&event_1_success)); assert!(filter_accept_all.matches(&event_2_failure)); assert!(filter_accept_all.matches(&event_2_success)); let filter_accept_success = - TriggerCompletedEventFilter::new(None, Some(TriggerCompletedOutcomeType::Success)); + TriggerCompletedEventFilter::new().with_outcome(TriggerCompletedOutcomeType::Success); assert!(!filter_accept_success.matches(&event_1_failure)); assert!(filter_accept_success.matches(&event_1_success)); assert!(!filter_accept_success.matches(&event_2_failure)); assert!(filter_accept_success.matches(&event_2_success)); let filter_accept_failure = - TriggerCompletedEventFilter::new(None, Some(TriggerCompletedOutcomeType::Failure)); + TriggerCompletedEventFilter::new().with_outcome(TriggerCompletedOutcomeType::Failure); assert!(filter_accept_failure.matches(&event_1_failure)); assert!(!filter_accept_failure.matches(&event_1_success)); assert!(filter_accept_failure.matches(&event_2_failure)); assert!(!filter_accept_failure.matches(&event_2_success)); - let filter_accept_1 = TriggerCompletedEventFilter::new(Some(trigger_id_1.clone()), None); + let filter_accept_1 = TriggerCompletedEventFilter::new().from_trigger(trigger_id_1.clone()); assert!(filter_accept_1.matches(&event_1_failure)); assert!(filter_accept_1.matches(&event_1_success)); assert!(!filter_accept_1.matches(&event_2_failure)); assert!(!filter_accept_1.matches(&event_2_success)); - let filter_accept_1_failure = TriggerCompletedEventFilter::new( - Some(trigger_id_1.clone()), - Some(TriggerCompletedOutcomeType::Failure), - ); + let filter_accept_1_failure = TriggerCompletedEventFilter::new() + .from_trigger(trigger_id_1.clone()) + .with_outcome(TriggerCompletedOutcomeType::Failure); assert!(filter_accept_1_failure.matches(&event_1_failure)); assert!(!filter_accept_1_failure.matches(&event_1_success)); assert!(!filter_accept_1_failure.matches(&event_2_failure)); assert!(!filter_accept_1_failure.matches(&event_2_success)); - let filter_accept_1_success = TriggerCompletedEventFilter::new( - Some(trigger_id_1), - Some(TriggerCompletedOutcomeType::Success), - ); + let filter_accept_1_success = TriggerCompletedEventFilter::new() + .from_trigger(trigger_id_1) + .with_outcome(TriggerCompletedOutcomeType::Success); assert!(!filter_accept_1_success.matches(&event_1_failure)); assert!(filter_accept_1_success.matches(&event_1_success)); assert!(!filter_accept_1_success.matches(&event_2_failure)); assert!(!filter_accept_1_success.matches(&event_2_success)); - let filter_accept_2 = TriggerCompletedEventFilter::new(Some(trigger_id_2.clone()), None); + let filter_accept_2 = TriggerCompletedEventFilter::new().from_trigger(trigger_id_2.clone()); assert!(!filter_accept_2.matches(&event_1_failure)); assert!(!filter_accept_2.matches(&event_1_success)); assert!(filter_accept_2.matches(&event_2_failure)); assert!(filter_accept_2.matches(&event_2_success)); - let filter_accept_2_failure = TriggerCompletedEventFilter::new( - Some(trigger_id_2.clone()), - Some(TriggerCompletedOutcomeType::Failure), - ); + let filter_accept_2_failure = TriggerCompletedEventFilter::new() + .from_trigger(trigger_id_2.clone()) + .with_outcome(TriggerCompletedOutcomeType::Failure); assert!(!filter_accept_2_failure.matches(&event_1_failure)); assert!(!filter_accept_2_failure.matches(&event_1_success)); assert!(filter_accept_2_failure.matches(&event_2_failure)); assert!(!filter_accept_2_failure.matches(&event_2_success)); - let filter_accept_2_success = TriggerCompletedEventFilter::new( - Some(trigger_id_2), - Some(TriggerCompletedOutcomeType::Success), - ); + let filter_accept_2_success = TriggerCompletedEventFilter::new() + .from_trigger(trigger_id_2) + .with_outcome(TriggerCompletedOutcomeType::Success); assert!(!filter_accept_2_success.matches(&event_1_failure)); assert!(!filter_accept_2_success.matches(&event_1_success)); assert!(!filter_accept_2_success.matches(&event_2_failure)); diff --git a/data_model/src/events/pipeline.rs b/data_model/src/events/pipeline.rs index 49b43d4f0a7..060e1fe1798 100644 --- a/data_model/src/events/pipeline.rs +++ b/data_model/src/events/pipeline.rs @@ -28,6 +28,7 @@ pub mod model { PartialOrd, Ord, Default, + Getters, Decode, Encode, Serialize, @@ -154,33 +155,37 @@ pub mod model { } impl PipelineEventFilter { - /// Construct [`EventFilter`]. + /// Creates a new [`PipelineEventFilter`] accepting all [`PipelineEvent`]s #[must_use] #[inline] - pub fn new() -> Self { - Self::default() + pub const fn new() -> Self { + Self { + status_kind: None, + entity_kind: None, + hash: None, + } } - /// Filter by [`EntityKind`]. + /// Modifies a [`PipelineEventFilter`] to accept only [`PipelineEvent`]s originating from a specific entity kind (block/transaction). #[must_use] #[inline] - pub const fn entity_kind(mut self, entity_kind: PipelineEntityKind) -> Self { + pub const fn from_entity_of_kind(mut self, entity_kind: PipelineEntityKind) -> Self { self.entity_kind = Some(entity_kind); self } - /// Filter by [`StatusKind`]. + /// Modifies a [`PipelineEventFilter`] to accept only [`PipelineEvent`]s with a specific status. #[must_use] #[inline] - pub const fn status_kind(mut self, status_kind: PipelineStatusKind) -> Self { + pub const fn with_status(mut self, status_kind: PipelineStatusKind) -> Self { self.status_kind = Some(status_kind); self } - /// Filter by [`struct@Hash`]. + /// Modifies a [`PipelineEventFilter`] to accept only [`PipelineEvent`]s originating from an antity with specified hash. #[must_use] #[inline] - pub const fn hash(mut self, hash: Hash) -> Self { + pub const fn from_entity_with_hash(mut self, hash: Hash) -> Self { self.hash = Some(hash); self } @@ -277,7 +282,7 @@ mod tests { events .iter() .filter(|&event| PipelineEventFilter::new() - .hash(Hash::prehashed([0_u8; Hash::LENGTH])) + .from_entity_with_hash(Hash::prehashed([0_u8; Hash::LENGTH])) .matches(event)) .cloned() .collect::>() @@ -291,7 +296,7 @@ mod tests { events .iter() .filter(|&event| PipelineEventFilter::new() - .entity_kind(PipelineEntityKind::Block) + .from_entity_of_kind(PipelineEntityKind::Block) .matches(event)) .cloned() .collect::>() @@ -305,8 +310,8 @@ mod tests { events .iter() .filter(|&event| PipelineEventFilter::new() - .entity_kind(PipelineEntityKind::Transaction) - .hash(Hash::prehashed([2_u8; Hash::LENGTH])) + .from_entity_of_kind(PipelineEntityKind::Transaction) + .from_entity_with_hash(Hash::prehashed([2_u8; Hash::LENGTH])) .matches(event)) .cloned() .collect::>() diff --git a/docs/source/references/schema.json b/docs/source/references/schema.json index 9e2b47da8e6..f64d5cd6336 100644 --- a/docs/source/references/schema.json +++ b/docs/source/references/schema.json @@ -97,47 +97,47 @@ "AccountEventMatcher": { "Enum": [ { - "tag": "ByCreated", + "tag": "Created", "discriminant": 0 }, { - "tag": "ByDeleted", + "tag": "Deleted", "discriminant": 1 }, { - "tag": "ByAuthenticationAdded", + "tag": "AuthenticationAdded", "discriminant": 2 }, { - "tag": "ByAuthenticationRemoved", + "tag": "AuthenticationRemoved", "discriminant": 3 }, { - "tag": "ByPermissionAdded", + "tag": "PermissionAdded", "discriminant": 4 }, { - "tag": "ByPermissionRemoved", + "tag": "PermissionRemoved", "discriminant": 5 }, { - "tag": "ByRoleRevoked", + "tag": "RoleRevoked", "discriminant": 6 }, { - "tag": "ByRoleGranted", + "tag": "RoleGranted", "discriminant": 7 }, { - "tag": "ByMetadataInserted", + "tag": "MetadataInserted", "discriminant": 8 }, { - "tag": "ByMetadataRemoved", + "tag": "MetadataRemoved", "discriminant": 9 }, { - "tag": "ByAssetAny", + "tag": "AnyAsset", "discriminant": 10 } ] @@ -391,31 +391,31 @@ "AssetDefinitionEventMatcher": { "Enum": [ { - "tag": "ByCreated", + "tag": "Created", "discriminant": 0 }, { - "tag": "ByMintabilityChanged", + "tag": "MintabilityChanged", "discriminant": 1 }, { - "tag": "ByOwnerChanged", + "tag": "OwnerChanged", "discriminant": 2 }, { - "tag": "ByDeleted", + "tag": "Deleted", "discriminant": 3 }, { - "tag": "ByMetadataInserted", + "tag": "MetadataInserted", "discriminant": 4 }, { - "tag": "ByMetadataRemoved", + "tag": "MetadataRemoved", "discriminant": 5 }, { - "tag": "ByTotalQuantityChanged", + "tag": "TotalQuantityChanged", "discriminant": 6 } ] @@ -505,27 +505,27 @@ "AssetEventMatcher": { "Enum": [ { - "tag": "ByCreated", + "tag": "Created", "discriminant": 0 }, { - "tag": "ByDeleted", + "tag": "Deleted", "discriminant": 1 }, { - "tag": "ByAdded", + "tag": "Added", "discriminant": 2 }, { - "tag": "ByRemoved", + "tag": "Removed", "discriminant": 3 }, { - "tag": "ByMetadataInserted", + "tag": "MetadataInserted", "discriminant": 4 }, { - "tag": "ByMetadataRemoved", + "tag": "MetadataRemoved", "discriminant": 5 } ] @@ -911,41 +911,41 @@ "DataEventFilter": { "Enum": [ { - "tag": "ByAny", + "tag": "Any", "discriminant": 0 }, { - "tag": "ByPeer", + "tag": "Peer", "discriminant": 1, "type": "PeerEventFilter" }, { - "tag": "ByDomain", + "tag": "Domain", "discriminant": 2, "type": "DomainEventFilter" }, { - "tag": "ByAccount", + "tag": "Account", "discriminant": 3, "type": "AccountEventFilter" }, { - "tag": "ByAsset", + "tag": "Asset", "discriminant": 4, "type": "AssetEventFilter" }, { - "tag": "ByAssetDefinition", + "tag": "AssetDefinition", "discriminant": 5, "type": "AssetDefinitionEventFilter" }, { - "tag": "ByTrigger", + "tag": "Trigger", "discriminant": 6, "type": "TriggerEventFilter" }, { - "tag": "ByRole", + "tag": "Role", "discriminant": 7, "type": "RoleEventFilter" } @@ -1037,31 +1037,31 @@ "DomainEventMatcher": { "Enum": [ { - "tag": "ByCreated", + "tag": "Created", "discriminant": 0 }, { - "tag": "ByDeleted", + "tag": "Deleted", "discriminant": 1 }, { - "tag": "ByMetadataInserted", + "tag": "MetadataInserted", "discriminant": 2 }, { - "tag": "ByMetadataRemoved", + "tag": "MetadataRemoved", "discriminant": 3 }, { - "tag": "ByOwnerChanged", + "tag": "OwnerChanged", "discriminant": 4 }, { - "tag": "ByAccountAny", + "tag": "AnyAccount", "discriminant": 5 }, { - "tag": "ByAssetDefinitionAny", + "tag": "AnyAssetDefinition", "discriminant": 6 } ] @@ -1190,11 +1190,11 @@ "Struct": [ { "name": "trigger_id", - "type": "TriggerId" + "type": "Option" }, { "name": "authority", - "type": "AccountId" + "type": "Option" } ] }, @@ -2662,11 +2662,11 @@ "PeerEventMatcher": { "Enum": [ { - "tag": "ByAdded", + "tag": "Added", "discriminant": 0 }, { - "tag": "ByRemoved", + "tag": "Removed", "discriminant": 1 } ] @@ -3408,15 +3408,15 @@ "RoleEventMatcher": { "Enum": [ { - "tag": "ByCreated", + "tag": "Created", "discriminant": 0 }, { - "tag": "ByDeleted", + "tag": "Deleted", "discriminant": 1 }, { - "tag": "ByPermissionRemoved", + "tag": "PermissionRemoved", "discriminant": 2 } ] @@ -4184,19 +4184,19 @@ "TriggerEventMatcher": { "Enum": [ { - "tag": "ByCreated", + "tag": "Created", "discriminant": 0 }, { - "tag": "ByDeleted", + "tag": "Deleted", "discriminant": 1 }, { - "tag": "ByExtended", + "tag": "Extended", "discriminant": 2 }, { - "tag": "ByShortened", + "tag": "Shortened", "discriminant": 3 } ] diff --git a/tools/parity_scale_decoder/samples/trigger.bin b/tools/parity_scale_decoder/samples/trigger.bin index 57c9ef7d4e18d2ab8cac3e417b0141eb0fa3d20d..2eb148f65c4aa21b5e844b567c76cfa3e608c44f 100644 GIT binary patch delta 8 PcmebAo#4gH$jSf!32p&> delta 7 OcmebEnc&65zyJUT=mB;B diff --git a/tools/parity_scale_decoder/samples/trigger.json b/tools/parity_scale_decoder/samples/trigger.json index c743227478a..060b9519892 100644 --- a/tools/parity_scale_decoder/samples/trigger.json +++ b/tools/parity_scale_decoder/samples/trigger.json @@ -19,9 +19,9 @@ "authority": "alice@wonderland", "filter": { "Data": { - "ByDomain": { - "origin_filter": null, - "event_filter": "ByAccount" + "Domain": { + "id_matcher": null, + "event_matcher": "AnyAccount" } } }, diff --git a/tools/parity_scale_decoder/src/main.rs b/tools/parity_scale_decoder/src/main.rs index 38942336c91..cbf48518ed2 100644 --- a/tools/parity_scale_decoder/src/main.rs +++ b/tools/parity_scale_decoder/src/main.rs @@ -264,10 +264,9 @@ mod tests { vec![Mint::asset_quantity(1_u32, rose_id)], Repeats::Indefinitely, account_id, - EventFilterBox::Data(DataEventFilter::ByDomain(DomainEventFilter { - id_matcher: None, - event_matcher: None, - })), + EventFilterBox::Data(DataEventFilter::Domain( + DomainEventFilter::new().only_events(DomainEventMatcher::AnyAccount), + )), ); let trigger = Trigger::new(trigger_id, action);