From 8f0b7183336910a5e4c16a2d6ff0dcf4d7e0a514 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Mon, 8 Sep 2025 07:36:39 +0700 Subject: [PATCH 1/5] chore: drive linting --- .../contract/apply/apply_contract/v0/mod.rs | 2 +- .../v0/mod.rs | 11 +++- .../get_fetch/fetch_contract/v0/mod.rs | 8 +-- .../fetch_contract_with_history/v0/mod.rs | 2 +- .../rs-drive/src/drive/contract/queries.rs | 3 +- .../v0/mod.rs | 4 +- .../get_epoch_fee_multiplier/v0/mod.rs | 4 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 4 +- .../get_epoch_protocol_version/v0/mod.rs | 2 +- .../epochs/has_epoch_tree_exists.rs | 2 +- .../credit_pools/epochs/operations_factory.rs | 16 +++-- .../proposers/fetch_epoch_proposers/v0/mod.rs | 2 +- .../get_epochs_proposer_block_count/v0/mod.rs | 4 +- .../v0/mod.rs | 2 +- .../get_epoch_start_block_height/v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../credit_pools/epochs/start_block/mod.rs | 2 +- .../start_time/get_epoch_start_time/v0/mod.rs | 2 +- .../rs-drive/src/drive/credit_pools/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../fetch_pending_epoch_refunds/v0/mod.rs | 2 +- .../v0/mod.rs | 4 +- .../get_unpaid_epoch_index/v0/mod.rs | 4 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../query_contested_documents_storage/mod.rs | 4 +- .../v0/mod.rs | 2 +- .../mod.rs | 4 +- .../v0/mod.rs | 2 +- .../document/query/query_documents/mod.rs | 4 +- .../document/query/query_documents/v0/mod.rs | 4 +- .../query/query_documents_with_flags/mod.rs | 4 +- .../query_documents_with_flags/v0/mod.rs | 2 +- .../fetch/fetch_active_action_info/mod.rs | 2 +- .../group/prove/prove_action_infos/mod.rs | 4 +- .../balance/fetch_identity_balance/v0/mod.rs | 9 ++- .../fetch_identity_negative_balance/v0/mod.rs | 9 ++- .../rs-drive/src/drive/identity/fetch/mod.rs | 8 +-- .../v0/mod.rs | 2 +- .../src/drive/identity/fetch/queries/mod.rs | 16 +++-- .../src/drive/identity/key/fetch/mod.rs | 2 +- .../insert/insert_key_to_storage/v0/mod.rs | 2 +- .../insert/replace_key_in_storage/v0/mod.rs | 2 +- .../src/drive/identity/key/queries.rs | 3 +- .../mod.rs | 4 +- .../methods/re_enable_identity_keys/mod.rs | 2 +- .../v0/mod.rs | 15 ++--- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../initialization/genesis_core_height/mod.rs | 2 +- .../fetch_platform_state_bytes/v0/mod.rs | 2 +- .../store_platform_state_bytes/v0/mod.rs | 2 +- .../fetch/single_balance/mod.rs | 2 +- .../fetch/single_balance/v0/mod.rs | 9 ++- .../mod.rs | 2 +- .../fetch_validator_version_votes/mod.rs | 2 +- .../mod.rs | 4 +- .../v0/mod.rs | 14 ++--- .../mod.rs | 6 +- .../v0/mod.rs | 4 +- .../fetch_current_protocol_version.rs | 2 +- .../store_current_protocol_version.rs | 2 +- .../fetch_identity_token_balance/v0/mod.rs | 9 ++- .../fetch_token_contract_info/v0/mod.rs | 5 +- .../v0/mod.rs | 5 +- .../add_pre_programmed_distribution/v0/mod.rs | 4 +- .../v0/mod.rs | 5 +- .../v0/mod.rs | 5 +- .../info/fetch_identity_token_info/v0/mod.rs | 5 +- .../status/fetch_token_status/v0/mod.rs | 5 +- .../v0/mod.rs | 4 +- packages/rs-drive/src/drive/votes/paths.rs | 4 +- .../mod.rs | 8 +-- packages/rs-drive/src/error/mod.rs | 20 ++++-- packages/rs-drive/src/lib.rs | 1 + .../v0/mod.rs | 2 +- ..._resource_votes_given_by_identity_query.rs | 24 +++++-- .../query/drive_contested_document_query.rs | 13 +++- packages/rs-drive/src/query/mod.rs | 55 ++++++++++------ .../src/query/single_document_drive_query.rs | 2 +- .../query/vote_poll_contestant_votes_query.rs | 24 +++++-- .../src/query/vote_poll_vote_state_query.rs | 11 +++- .../vote_polls_by_document_type_query.rs | 17 +++-- .../src/query/vote_polls_by_end_date_query.rs | 63 ++++++++++++++----- .../identity/masternode_vote_transition.rs | 2 +- .../token_transition/mod.rs | 2 +- .../token_base_transition_action/v0/mod.rs | 6 +- .../transformer.rs | 8 +-- .../src/util/batch/drive_op_batch/document.rs | 1 + .../src/util/batch/grovedb_op_batch/mod.rs | 4 +- packages/rs-drive/src/util/common/encode.rs | 1 + .../v0/mod.rs | 12 ++-- .../mod.rs | 20 +++--- .../grove_operations/batch_move/v0/mod.rs | 4 +- .../batch_move_items_in_path_query/v0/mod.rs | 8 +-- .../batch_remove_raw/v0/mod.rs | 2 +- .../v0/mod.rs | 4 +- .../grove_operations/grove_clear/v0/mod.rs | 6 +- .../util/grove_operations/grove_get/v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../grove_get_path_query/v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../grove_get_proved_path_query/v0/mod.rs | 2 +- .../v0/mod.rs | 4 +- .../grove_operations/grove_get_raw/v0/mod.rs | 2 +- .../grove_get_raw_item/v0/mod.rs | 2 +- .../grove_get_raw_optional/v0/mod.rs | 2 +- .../grove_get_raw_optional_item/v0/mod.rs | 2 +- .../grove_get_raw_path_query/v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../grove_get_sum_tree_total_value/v0/mod.rs | 2 +- .../rs-drive/src/util/grove_operations/mod.rs | 4 +- .../util/object_size_info/contract_info.rs | 8 +-- .../object_size_info/path_key_element_info.rs | 1 + .../util/object_size_info/path_key_info.rs | 1 + .../apply_batch_grovedb_operations/mod.rs | 1 + .../apply_batch_grovedb_operations/v0/mod.rs | 1 + .../mod.rs | 1 + .../v0/mod.rs | 1 + .../mod.rs | 1 + .../v0/mod.rs | 1 + .../util/operations/commit_transaction/mod.rs | 1 + .../operations/commit_transaction/v0/mod.rs | 3 +- .../operations/rollback_transaction/mod.rs | 1 + .../operations/rollback_transaction/v0/mod.rs | 3 +- .../test_helpers/test_utils/identities.rs | 1 + .../verify/contract/verify_contract/v0/mod.rs | 11 ++-- .../verify_contract_history/v0/mod.rs | 4 +- .../mod.rs | 7 ++- .../v0/mod.rs | 13 ++-- .../verify/document/verify_proof/v0/mod.rs | 2 +- .../verify_proof_keep_serialized/v0/mod.rs | 2 +- .../v0/mod.rs | 4 +- .../verify/group/verify_action_signers/mod.rs | 4 +- .../group/verify_active_action_infos/mod.rs | 4 +- .../verify/group/verify_group_info/v0/mod.rs | 2 +- .../verify_group_infos_in_contract/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../v0/mod.rs | 6 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../verify_identity_contract_nonce/v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 8 +-- .../identity/verify_identity_nonce/v0/mod.rs | 2 +- packages/rs-drive/src/verify/mod.rs | 2 + .../single_document/verify_proof/v0/mod.rs | 2 +- .../verify_proof_keep_serialized/v0/mod.rs | 2 +- .../token_transition.rs | 2 +- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../voting/verify_contests_proof/v0/mod.rs | 4 +- .../verify_specialized_balance/v0/mod.rs | 2 +- 159 files changed, 488 insertions(+), 310 deletions(-) diff --git a/packages/rs-drive/src/drive/contract/apply/apply_contract/v0/mod.rs b/packages/rs-drive/src/drive/contract/apply/apply_contract/v0/mod.rs index 795ed88a80..e51b789112 100644 --- a/packages/rs-drive/src/drive/contract/apply/apply_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/apply/apply_contract/v0/mod.rs @@ -78,7 +78,7 @@ impl Drive { ) -> Result, Error> { let serialized_contract = contract .serialize_to_bytes_with_platform_version(platform_version) - .map_err(Error::Protocol)?; + .map_err(Error::from)?; if serialized_contract.len() as u64 > u32::MAX as u64 || serialized_contract.len() as u32 diff --git a/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs b/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs index 6b24e43270..e15e4e2152 100644 --- a/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs @@ -169,9 +169,14 @@ impl Drive { // we are in estimated costs // keep already_exists at false } - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) - | Err(Error::GroveDB(grovedb::Error::PathNotFound(_))) - | Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) => { + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + grovedb::Error::PathKeyNotFound(_) + | grovedb::Error::PathNotFound(_) + | grovedb::Error::PathParentLayerNotFound(_) + ) => + { // keep already_exists at false } Err(e) => { diff --git a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs index 0d40cd945e..881e157cc6 100644 --- a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs @@ -83,7 +83,7 @@ impl Drive { false, platform_version ) - .map_err(Error::Protocol) + .map_err(Error::from) ); let drive_operation = CalculatedCostOperation(cost.clone()); let fee = if let Some(epoch) = epoch { @@ -140,7 +140,7 @@ impl Drive { false, platform_version ) - .map_err(Error::Protocol) + .map_err(Error::from) ); let drive_operation = CalculatedCostOperation(cost.clone()); let fee = if let Some(epoch) = epoch { @@ -183,7 +183,7 @@ impl Drive { | grovedb::Error::PathParentLayerNotFound(_) | grovedb::Error::PathNotFound(_), ) => Ok(None).wrap_with_cost(cost), - Err(e) => Err(Error::GroveDB(e)).wrap_with_cost(cost), + Err(e) => Err(Error::from(e)).wrap_with_cost(cost), } } Ok(_) => Err(Error::Drive(DriveError::CorruptedContractPath( @@ -195,7 +195,7 @@ impl Drive { | grovedb::Error::PathParentLayerNotFound(_) | grovedb::Error::PathNotFound(_), ) => Ok(None).wrap_with_cost(cost), - Err(e) => Err(Error::GroveDB(e)).wrap_with_cost(cost), + Err(e) => Err(Error::from(e)).wrap_with_cost(cost), } } diff --git a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs index 8bb977a5bc..42afb61250 100644 --- a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs @@ -84,7 +84,7 @@ impl Drive { Element::Item(item, _flags) => { let contract = DataContract::versioned_deserialize(item, false, platform_version) - .map_err(Error::Protocol)?; + .map_err(Error::from)?; Ok((contract_time, contract)) } _ => Err(Error::Drive(DriveError::CorruptedContractPath( diff --git a/packages/rs-drive/src/drive/contract/queries.rs b/packages/rs-drive/src/drive/contract/queries.rs index 30bb318e0b..790a105d78 100644 --- a/packages/rs-drive/src/drive/contract/queries.rs +++ b/packages/rs-drive/src/drive/contract/queries.rs @@ -5,7 +5,6 @@ use crate::drive::contract::{paths, MAX_CONTRACT_HISTORY_FETCH_LIMIT}; use crate::drive::{Drive, RootTree}; use crate::error::drive::DriveError; use crate::error::Error; -use crate::error::Error::GroveDB; use crate::query::{Query, QueryItem}; use crate::util::common::encode::encode_u64; use grovedb::{PathQuery, SizedQuery}; @@ -143,7 +142,7 @@ impl Drive { vec![&contracts_query, &historical_contracts_query], &platform_version.drive.grove_version, ) - .map_err(GroveDB) + .map_err(Error::from) } /// Creates a merged path query for multiple historical contracts. diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_processing_credits_for_distribution_operation/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_processing_credits_for_distribution_operation/v0/mod.rs index f163236b47..9c12fc25ae 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_processing_credits_for_distribution_operation/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_processing_credits_for_distribution_operation/v0/mod.rs @@ -43,9 +43,9 @@ impl Drive { }; if amount > i64::MAX as u64 { - return Err(Error::Protocol(ProtocolError::Overflow( + return Err(Error::Protocol(Box::new(ProtocolError::Overflow( "adding over i64::Max to processing fee pool", - ))); + )))); } let updated_value = existing_value diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs index dbbb40158a..f1cf2be299 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_fee_multiplier/v0/mod.rs @@ -27,7 +27,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(encoded_multiplier, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( @@ -72,7 +72,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_processing_credits_for_distribution/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_processing_credits_for_distribution/v0/mod.rs index ae0265d393..d6ea7a6e6c 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_processing_credits_for_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_processing_credits_for_distribution/v0/mod.rs @@ -28,7 +28,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::SumItem(credits, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_storage_credits_for_distribution/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_storage_credits_for_distribution/v0/mod.rs index c12720a8b6..6fa601b210 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_storage_credits_for_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/get_epoch_storage_credits_for_distribution/v0/mod.rs @@ -26,7 +26,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::SumItem(item, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( @@ -68,7 +68,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/get_epoch_protocol_version/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/get_epoch_protocol_version/v0/mod.rs index ef7d9fb7a7..7bf8c93d3d 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/get_epoch_protocol_version/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/get_epoch_protocol_version/v0/mod.rs @@ -26,7 +26,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(encoded_protocol_version, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/has_epoch_tree_exists.rs b/packages/rs-drive/src/drive/credit_pools/epochs/has_epoch_tree_exists.rs index 7106d15a79..53ef090f16 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/has_epoch_tree_exists.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/has_epoch_tree_exists.rs @@ -22,7 +22,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB) + .map_err(Error::from) } } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs index ac6f42c5b5..738cab59ea 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs @@ -121,7 +121,11 @@ impl EpochOperations for Epoch { platform_version, ) .or_else(|e| match e { - Error::GroveDB(grovedb::Error::PathKeyNotFound(_)) => Ok(0u64), + Error::GroveDB(inner) + if matches!(inner.as_ref(), grovedb::Error::PathKeyNotFound(_)) => + { + Ok(0u64) + } _ => Err(e), })? }; @@ -444,7 +448,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::InvalidPath(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::InvalidPath(_)) )); } @@ -615,7 +619,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) )); let result = drive.get_epoch_storage_credits_for_distribution( @@ -626,7 +630,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) )); } } @@ -764,7 +768,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::InvalidPath(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::InvalidPath(_)) )); } @@ -820,7 +824,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::InvalidPath(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::InvalidPath(_)) )); } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/proposers/fetch_epoch_proposers/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/proposers/fetch_epoch_proposers/v0/mod.rs index db8cec899f..e6058e8608 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/proposers/fetch_epoch_proposers/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/proposers/fetch_epoch_proposers/v0/mod.rs @@ -99,7 +99,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .0 .to_key_elements(); diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/proposers/get_epochs_proposer_block_count/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/proposers/get_epochs_proposer_block_count/v0/mod.rs index 8475308ffd..d7af4abda7 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/proposers/get_epochs_proposer_block_count/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/proposers/get_epochs_proposer_block_count/v0/mod.rs @@ -25,7 +25,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(encoded_proposer_block_count, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( @@ -117,7 +117,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_core_height/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_core_height/v0/mod.rs index 8d4b7bbafe..bfc6a90a2e 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_core_height/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_core_height/v0/mod.rs @@ -26,7 +26,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(encoded_start_block_core_height, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_height/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_height/v0/mod.rs index 2b650b284a..700959ddfb 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_height/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_epoch_start_block_height/v0/mod.rs @@ -26,7 +26,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(encoded_start_block_height, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_first_epoch_start_block_info_between_epochs/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_first_epoch_start_block_info_between_epochs/v0/mod.rs index 1dea861823..4521a45e4a 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_first_epoch_start_block_info_between_epochs/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/get_first_epoch_start_block_info_between_epochs/v0/mod.rs @@ -52,7 +52,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; if result_items.is_empty() { return Ok(None); diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/mod.rs index 2788fd9ff2..85d6f613ec 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/start_block/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/start_block/mod.rs @@ -58,7 +58,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/start_time/get_epoch_start_time/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/start_time/get_epoch_start_time/v0/mod.rs index 8874dc7fa1..b79682299d 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/start_time/get_epoch_start_time/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/start_time/get_epoch_start_time/v0/mod.rs @@ -25,7 +25,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Some(element) = element else { return Ok(None); diff --git a/packages/rs-drive/src/drive/credit_pools/mod.rs b/packages/rs-drive/src/drive/credit_pools/mod.rs index 9fb4eeca24..e43660706d 100644 --- a/packages/rs-drive/src/drive/credit_pools/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/mod.rs @@ -115,7 +115,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let storage_fee_pools = storage_fee_pools_result.to_elements(); diff --git a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs index 21b200ade4..146333b63c 100644 --- a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs @@ -37,7 +37,7 @@ impl Drive { &drive_version.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; for (epoch_index_key, _) in query_result.to_key_elements() { let epoch_index = diff --git a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_and_add_pending_epoch_refunds_to_collection/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_and_add_pending_epoch_refunds_to_collection/v0/mod.rs index 737cadc748..02d1c5fbd9 100644 --- a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_and_add_pending_epoch_refunds_to_collection/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_and_add_pending_epoch_refunds_to_collection/v0/mod.rs @@ -44,7 +44,7 @@ impl Drive { &drive_version.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; // Merge with existing pending updates for (epoch_index_key, element) in query_result.to_key_elements() { diff --git a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_pending_epoch_refunds/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_pending_epoch_refunds/v0/mod.rs index 08007ef34f..7574d6baf6 100644 --- a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_pending_epoch_refunds/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/fetch_pending_epoch_refunds/v0/mod.rs @@ -32,7 +32,7 @@ impl Drive { &drive_version.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; query_result .to_key_elements() diff --git a/packages/rs-drive/src/drive/credit_pools/storage_fee_distribution_pool/get_storage_fees_from_distribution_pool/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/storage_fee_distribution_pool/get_storage_fees_from_distribution_pool/v0/mod.rs index ee90eec06c..a762cc35ce 100644 --- a/packages/rs-drive/src/drive/credit_pools/storage_fee_distribution_pool/get_storage_fees_from_distribution_pool/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/storage_fee_distribution_pool/get_storage_fees_from_distribution_pool/v0/mod.rs @@ -31,7 +31,7 @@ impl Drive { "fee pools storage fee pool must be sum item", ))), Err(grovedb::Error::PathKeyNotFound(_)) => Ok(0), - Err(e) => Err(Error::GroveDB(e)), + Err(e) => Err(Error::from(e)), } } } @@ -62,7 +62,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } diff --git a/packages/rs-drive/src/drive/credit_pools/unpaid_epoch/get_unpaid_epoch_index/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/unpaid_epoch/get_unpaid_epoch_index/v0/mod.rs index bcfdaf59b1..9d732e2e0a 100644 --- a/packages/rs-drive/src/drive/credit_pools/unpaid_epoch/get_unpaid_epoch_index/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/unpaid_epoch/get_unpaid_epoch_index/v0/mod.rs @@ -25,7 +25,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(encoded_epoch_index, _) = element else { return Err(Error::Drive(DriveError::UnexpectedElementType( @@ -64,7 +64,7 @@ mod tests { assert!(matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } diff --git a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs index 2bcaf9ccbc..b8c7444e85 100644 --- a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs @@ -32,7 +32,7 @@ impl Drive { /// * `document_and_contract_info`: Information about the document and its associated contract. /// * `primary_key_path`: Key path where the document should be stored in primary storage. /// * `estimated_costs_only_with_layer_info`: A mutable reference to a hashmap where the estimated layer - /// information will be stored for the given key path. + /// information will be stored for the given key path. /// * `platform_version`: Version of the platform being used, potentially affecting some estimates. /// /// # Returns diff --git a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs index 9b5bb29ebd..5185812f53 100644 --- a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs @@ -39,7 +39,7 @@ impl Drive { /// * `document_and_contract_info`: Information about the document and its associated contract. /// * `primary_key_path`: Key path where the document should be stored in primary storage. /// * `estimated_costs_only_with_layer_info`: A mutable reference to a hashmap where the estimated layer - /// information will be stored for the given key path. + /// information will be stored for the given key path. /// * `platform_version`: Version of the platform being used, potentially affecting some estimates. /// /// # Returns diff --git a/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/mod.rs b/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/mod.rs index 4a3844c871..89e02efa63 100644 --- a/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/mod.rs @@ -59,12 +59,12 @@ impl Drive { /// * `dry_run` - If true, the function will not perform any actual operation and return a default `QueryDocumentsOutcome`. /// * `transaction` - The `TransactionArg` holding the transaction data. /// * `protocol_version` - An `Option` representing the protocol version. If not provided, the function falls back - /// to current or latest version. + /// to current or latest version. /// /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. pub fn query_contested_documents( &self, query: DriveContestedDocumentQuery, diff --git a/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/v0/mod.rs index 91a9aa0f90..26e6b94c16 100644 --- a/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_contested_documents_storage/v0/mod.rs @@ -62,7 +62,7 @@ impl Drive { /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. #[inline(always)] pub(super) fn query_contested_documents_v0( &self, diff --git a/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/mod.rs b/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/mod.rs index 0af3e4b97c..1912f95672 100644 --- a/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/mod.rs @@ -59,12 +59,12 @@ impl Drive { /// * `dry_run` - If true, the function will not perform any actual operation and return a default `QueryDocumentsOutcome`. /// * `transaction` - The `TransactionArg` holding the transaction data. /// * `protocol_version` - An `Option` representing the protocol version. If not provided, the function falls back - /// to current or latest version. + /// to current or latest version. /// /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. pub fn query_contested_documents_vote_state( &self, query: ContestedDocumentVotePollDriveQuery, diff --git a/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/v0/mod.rs b/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/v0/mod.rs index c9a36c4fba..e14f44cc25 100644 --- a/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_contested_documents_vote_state/v0/mod.rs @@ -62,7 +62,7 @@ impl Drive { /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. #[inline(always)] pub(super) fn query_contested_documents_vote_state_v0( &self, diff --git a/packages/rs-drive/src/drive/document/query/query_documents/mod.rs b/packages/rs-drive/src/drive/document/query/query_documents/mod.rs index d29b3a171c..d7b9028bd9 100644 --- a/packages/rs-drive/src/drive/document/query/query_documents/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_documents/mod.rs @@ -65,12 +65,12 @@ impl Drive { /// * `dry_run` - If true, the function will not perform any actual operation and return a default `QueryDocumentsOutcome`. /// * `transaction` - The `TransactionArg` holding the transaction data. /// * `protocol_version` - An `Option` representing the protocol version. If not provided, the function falls back - /// to current or latest version. + /// to current or latest version. /// /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. pub fn query_documents( &self, query: DriveDocumentQuery, diff --git a/packages/rs-drive/src/drive/document/query/query_documents/v0/mod.rs b/packages/rs-drive/src/drive/document/query/query_documents/v0/mod.rs index 3e34839f33..9c7a31112b 100644 --- a/packages/rs-drive/src/drive/document/query/query_documents/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_documents/v0/mod.rs @@ -68,7 +68,7 @@ impl Drive { /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. #[inline(always)] pub(super) fn query_documents_v0( &self, @@ -94,7 +94,7 @@ impl Drive { Document::from_bytes(serialized.as_slice(), query.document_type, platform_version) .map_err(|e| { Error::ProtocolWithInfoString( - e, + Box::new(e), format!( "document bytes are {}, query is using contract {:?}", hex::encode(serialized), diff --git a/packages/rs-drive/src/drive/document/query/query_documents_with_flags/mod.rs b/packages/rs-drive/src/drive/document/query/query_documents_with_flags/mod.rs index 8e0dacdf82..2900d3c2f2 100644 --- a/packages/rs-drive/src/drive/document/query/query_documents_with_flags/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_documents_with_flags/mod.rs @@ -66,12 +66,12 @@ impl Drive { /// * `dry_run` - If true, the function will not perform any actual operation and return a default `QueryDocumentsOutcome`. /// * `transaction` - The `TransactionArg` holding the transaction data. /// * `protocol_version` - An `Option` representing the protocol version. If not provided, the function falls back - /// to current or latest version. + /// to current or latest version. /// /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. pub fn query_documents_with_flags( &self, query: DriveDocumentQuery, diff --git a/packages/rs-drive/src/drive/document/query/query_documents_with_flags/v0/mod.rs b/packages/rs-drive/src/drive/document/query/query_documents_with_flags/v0/mod.rs index 8ac9db22ee..172fd0fa56 100644 --- a/packages/rs-drive/src/drive/document/query/query_documents_with_flags/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/query/query_documents_with_flags/v0/mod.rs @@ -70,7 +70,7 @@ impl Drive { /// # Returns /// /// * `Result` - Returns `QueryDocumentsOutcome` on success with the list of documents, - /// number of skipped items, and cost. If the operation fails, it returns an `Error`. + /// number of skipped items, and cost. If the operation fails, it returns an `Error`. #[inline(always)] pub(super) fn query_documents_with_flags_v0( &self, diff --git a/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/mod.rs b/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/mod.rs index efcf602610..3d644e60db 100644 --- a/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/mod.rs +++ b/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/mod.rs @@ -77,7 +77,7 @@ impl Drive { /// /// # Returns /// - `Ok(Option)`: The `GroupAction` for the specified action ID and contract position, along with any added operations. - /// We will always get back a value unless we are approximating without state. + /// We will always get back a value unless we are approximating without state. /// - `Err(Error)`: If an error occurs, a generic error is returned. /// /// # Errors diff --git a/packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs b/packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs index 48ff7cdf5b..6ab05e0d6d 100644 --- a/packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs +++ b/packages/rs-drive/src/drive/group/prove/prove_action_infos/mod.rs @@ -23,7 +23,7 @@ impl Drive { /// - `group_contract_position`: The position of the group within the contract whose actions are to be proven. /// - `action_status`: The status of the group actions to prove. /// - `start_action_id`: An optional starting action ID, combined with a [`StartAtIncluded`] flag to specify whether - /// the start position is inclusive. + /// the start position is inclusive. /// - `limit`: An optional limit on the number of actions to include in the proof. /// - `transaction`: The transaction context for the operation. /// - `platform_version`: A reference to the platform version, used to determine the appropriate versioned implementation. @@ -82,7 +82,7 @@ impl Drive { /// - `group_contract_position`: The position of the group within the contract whose actions are to be proven. /// - `action_status`: The status of the group actions to prove. /// - `start_action_id`: An optional starting action ID, combined with a [`StartAtIncluded`] flag to specify whether - /// the start position is inclusive. + /// the start position is inclusive. /// - `limit`: An optional limit on the number of actions to include in the proof. /// - `transaction`: The transaction context for the operation. /// - `drive_operations`: A mutable reference to a vector where additional low-level operations can be appended. diff --git a/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_balance/v0/mod.rs b/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_balance/v0/mod.rs index 31c0eb6b9c..fd6ace12c9 100644 --- a/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_balance/v0/mod.rs @@ -94,7 +94,14 @@ impl Drive { ) { Ok(Some(SumItem(balance, _))) if balance >= 0 => Ok(Some(balance as Credits)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => { + Ok(None) => { + if apply { + Ok(None) + } else { + Ok(Some(0)) + } + } + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { if apply { Ok(None) } else { diff --git a/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_negative_balance/v0/mod.rs b/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_negative_balance/v0/mod.rs index 8bc4ccb63b..e83d4996c2 100644 --- a/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_negative_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/fetch/balance/fetch_identity_negative_balance/v0/mod.rs @@ -53,7 +53,14 @@ impl Drive { Ok(Some(balance as Credits)) } - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => { + Ok(None) => { + if apply { + Ok(None) + } else { + Ok(Some(0)) + } + } + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { if apply { Ok(None) } else { diff --git a/packages/rs-drive/src/drive/identity/fetch/mod.rs b/packages/rs-drive/src/drive/identity/fetch/mod.rs index 79270a3569..5426940c94 100644 --- a/packages/rs-drive/src/drive/identity/fetch/mod.rs +++ b/packages/rs-drive/src/drive/identity/fetch/mod.rs @@ -105,7 +105,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; Ok(result_items.len() == ids.len()) } @@ -142,7 +142,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; result_items .to_key_elements() @@ -195,7 +195,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; results .into_iter() @@ -249,7 +249,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; result_items .to_key_elements() diff --git a/packages/rs-drive/src/drive/identity/fetch/prove/prove_full_identities_by_unique_public_key_hashes/v0/mod.rs b/packages/rs-drive/src/drive/identity/fetch/prove/prove_full_identities_by_unique_public_key_hashes/v0/mod.rs index 44f7965678..070c14cd38 100644 --- a/packages/rs-drive/src/drive/identity/fetch/prove/prove_full_identities_by_unique_public_key_hashes/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/fetch/prove/prove_full_identities_by_unique_public_key_hashes/v0/mod.rs @@ -39,7 +39,7 @@ impl Drive { path_queries.iter().collect(), &platform_version.drive.grove_version, ) - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; self.grove_get_proved_path_query( &path_query, transaction, diff --git a/packages/rs-drive/src/drive/identity/fetch/queries/mod.rs b/packages/rs-drive/src/drive/identity/fetch/queries/mod.rs index 258ea68153..645e9de02f 100644 --- a/packages/rs-drive/src/drive/identity/fetch/queries/mod.rs +++ b/packages/rs-drive/src/drive/identity/fetch/queries/mod.rs @@ -81,8 +81,7 @@ impl Drive { ) -> Result { let revision_query = Self::revision_for_identity_id_path_query(identity_id); let balance_query = Self::balance_for_identity_id_query(identity_id); - PathQuery::merge(vec![&revision_query, &balance_query], grove_version) - .map_err(Error::GroveDB) + PathQuery::merge(vec![&revision_query, &balance_query], grove_version).map_err(Error::from) } /// The query for proving an identity id from a public key hash. @@ -138,7 +137,7 @@ impl Drive { vec![&balance_query, &revision_query, &all_keys_query], grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) } /// The query getting all keys and revision @@ -149,8 +148,7 @@ impl Drive { let revision_query = Self::identity_revision_query(identity_id); let key_request = IdentityKeysRequest::new_all_keys_query(identity_id, None); let all_keys_query = key_request.into_path_query(); - PathQuery::merge(vec![&revision_query, &all_keys_query], grove_version) - .map_err(Error::GroveDB) + PathQuery::merge(vec![&revision_query, &all_keys_query], grove_version).map_err(Error::from) } /// The query getting all balances and revision @@ -214,7 +212,7 @@ impl Drive { .iter() .map(|identity_id| Self::full_identity_query(identity_id, grove_version)) .collect::, Error>>()?; - PathQuery::merge(path_queries.iter().collect(), grove_version).map_err(Error::GroveDB) + PathQuery::merge(path_queries.iter().collect(), grove_version).map_err(Error::from) } /// This query gets the full identity and the public key hash @@ -230,7 +228,7 @@ impl Drive { vec![&full_identity_query, &identity_id_by_public_key_hash_query], grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) } /// This query gets the full identity and the public key hash @@ -247,7 +245,7 @@ impl Drive { vec![&full_identity_query, &identity_id_by_public_key_hash_query], grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) } /// The query full identities with key hashes too @@ -264,7 +262,7 @@ impl Drive { vec![&identities_path_query, &key_hashes_to_identity_ids_query], grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) } /// The query for the identity balance diff --git a/packages/rs-drive/src/drive/identity/key/fetch/mod.rs b/packages/rs-drive/src/drive/identity/key/fetch/mod.rs index 042132faff..3a3951a474 100644 --- a/packages/rs-drive/src/drive/identity/key/fetch/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/fetch/mod.rs @@ -176,7 +176,7 @@ fn element_to_identity_public_key(element: Element) -> Result, platform_version: &PlatformVersion, ) -> Result<(), Error> { - let serialized_identity_key = identity_key.serialize_to_bytes().map_err(Error::Protocol)?; + let serialized_identity_key = identity_key.serialize_to_bytes().map_err(Error::from)?; // Now lets insert the public key let identity_key_tree = identity_key_tree_path(identity_id.as_slice()); diff --git a/packages/rs-drive/src/drive/identity/key/insert/replace_key_in_storage/v0/mod.rs b/packages/rs-drive/src/drive/identity/key/insert/replace_key_in_storage/v0/mod.rs index 145a3fb0d7..c06d39089b 100644 --- a/packages/rs-drive/src/drive/identity/key/insert/replace_key_in_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/insert/replace_key_in_storage/v0/mod.rs @@ -17,7 +17,7 @@ impl Drive { change_in_bytes: i32, drive_operations: &mut Vec, ) -> Result<(), Error> { - let serialized_identity_key = identity_key.serialize_to_bytes().map_err(Error::Protocol)?; + let serialized_identity_key = identity_key.serialize_to_bytes().map_err(Error::from)?; // Now lets insert the public key let identity_key_tree = identity_key_tree_path_vec(identity_id); diff --git a/packages/rs-drive/src/drive/identity/key/queries.rs b/packages/rs-drive/src/drive/identity/key/queries.rs index b82d32a35c..270be532b7 100644 --- a/packages/rs-drive/src/drive/identity/key/queries.rs +++ b/packages/rs-drive/src/drive/identity/key/queries.rs @@ -1,7 +1,6 @@ use crate::drive::identity::key::fetch::IdentityKeysRequest; use crate::drive::Drive; use crate::error::Error; -use crate::error::Error::GroveDB; use grovedb::PathQuery; use grovedb_version::version::GroveVersion; @@ -41,6 +40,6 @@ impl Drive { }) .collect::>(); - PathQuery::merge(path_queries.iter().collect(), grove_version).map_err(GroveDB) + PathQuery::merge(path_queries.iter().collect(), grove_version).map_err(Error::from) } } diff --git a/packages/rs-drive/src/drive/identity/update/methods/apply_balance_change_from_fee_to_identity/mod.rs b/packages/rs-drive/src/drive/identity/update/methods/apply_balance_change_from_fee_to_identity/mod.rs index ca00accd27..ba44bdd4d2 100644 --- a/packages/rs-drive/src/drive/identity/update/methods/apply_balance_change_from_fee_to_identity/mod.rs +++ b/packages/rs-drive/src/drive/identity/update/methods/apply_balance_change_from_fee_to_identity/mod.rs @@ -23,7 +23,7 @@ impl Drive { /// * `balance_change` - The balance changes to be applied to an identity. /// * `transaction` - The transaction information related to the operation. /// * `drive_version` - The drive version configuration, which determines the version of - /// the method to be used. + /// the method to be used. /// /// # Returns /// @@ -65,7 +65,7 @@ impl Drive { /// * `balance_change` - The balance changes to be applied to an identity. /// * `transaction` - The transaction information related to the operation. /// * `drive_version` - The drive version configuration, which determines the version of - /// the method to be used. + /// the method to be used. /// /// # Returns /// diff --git a/packages/rs-drive/src/drive/identity/update/methods/re_enable_identity_keys/mod.rs b/packages/rs-drive/src/drive/identity/update/methods/re_enable_identity_keys/mod.rs index dd89d99f60..2ad15db610 100644 --- a/packages/rs-drive/src/drive/identity/update/methods/re_enable_identity_keys/mod.rs +++ b/packages/rs-drive/src/drive/identity/update/methods/re_enable_identity_keys/mod.rs @@ -26,7 +26,7 @@ impl Drive { /// * `estimated_costs_only_with_layer_info` - Optional parameter that contains the estimated costs. /// * `transaction` - The transaction information related to the operation. /// * `drive_version` - The drive version configuration, which determines the version of - /// the method to be used. + /// the method to be used. /// /// # Returns /// diff --git a/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs b/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs index 474f44bf83..30680e6f00 100644 --- a/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs @@ -313,7 +313,7 @@ mod tests { .expect("Failed to decode outputScript"); let _ = properties.insert( "outputScript".to_string(), - Value::Bytes(output_script_bytes.into()), + Value::Bytes(output_script_bytes), ); } @@ -433,9 +433,6 @@ mod tests { .filter(|s| !s.trim().is_empty()) .collect(); - let mut queued_count = 0; - let mut total_count = 0; - for doc_json in documents { // Parse the document let doc_value: serde_json::Value = @@ -447,9 +444,8 @@ mod tests { .expect("status should be a number") as u8; if status == withdrawals_contract::WithdrawalStatus::QUEUED as u8 { - queued_count += 1; + // intentionally no-op: counts only used for debugging } - total_count += 1; let mut properties: Value = doc_value.clone().into(); @@ -461,7 +457,7 @@ mod tests { .expect("Failed to decode outputScript"); let _ = properties.insert( "outputScript".to_string(), - Value::Bytes(output_script_bytes.into()), + Value::Bytes(output_script_bytes), ); } @@ -499,13 +495,12 @@ mod tests { } // println!( - // "Total documents: {}, QUEUED documents: {}", - // total_count, queued_count + // "Total documents: printed only when debugging", // ); // Test the new function that fetches all documents grouped by status let documents_by_status = drive - .fetch_oldest_withdrawal_documents_v0(Some(&transaction), &platform_version) + .fetch_oldest_withdrawal_documents_v0(Some(&transaction), platform_version) .expect("to fetch all documents grouped by status"); // // Check that we have documents for different statuses diff --git a/packages/rs-drive/src/drive/identity/withdrawals/transaction/index/fetch_next_withdrawal_transaction_index/v0/mod.rs b/packages/rs-drive/src/drive/identity/withdrawals/transaction/index/fetch_next_withdrawal_transaction_index/v0/mod.rs index e0ca52ed8b..5e49ebc743 100644 --- a/packages/rs-drive/src/drive/identity/withdrawals/transaction/index/fetch_next_withdrawal_transaction_index/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/withdrawals/transaction/index/fetch_next_withdrawal_transaction_index/v0/mod.rs @@ -21,7 +21,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let Element::Item(counter_bytes, _) = element else { return Err(Error::Drive( diff --git a/packages/rs-drive/src/drive/identity/withdrawals/transaction/queue/dequeue_untied_withdrawal_transactions/v0/mod.rs b/packages/rs-drive/src/drive/identity/withdrawals/transaction/queue/dequeue_untied_withdrawal_transactions/v0/mod.rs index 5911ed5cda..d38ef2fc7f 100644 --- a/packages/rs-drive/src/drive/identity/withdrawals/transaction/queue/dequeue_untied_withdrawal_transactions/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/withdrawals/transaction/queue/dequeue_untied_withdrawal_transactions/v0/mod.rs @@ -45,7 +45,7 @@ impl Drive { &platform_version.drive.grove_version, ) .unwrap() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .0 .to_key_elements(); diff --git a/packages/rs-drive/src/drive/initialization/genesis_core_height/mod.rs b/packages/rs-drive/src/drive/initialization/genesis_core_height/mod.rs index 8f5acfee37..894af4abbb 100644 --- a/packages/rs-drive/src/drive/initialization/genesis_core_height/mod.rs +++ b/packages/rs-drive/src/drive/initialization/genesis_core_height/mod.rs @@ -59,7 +59,7 @@ impl Drive { .ok_or(Error::Drive(DriveError::CorruptedCodeExecution( "genesis core height must exist", ))) - .and_then(|element| element.into_item_bytes().map_err(Error::GroveDB))?; + .and_then(|element| element.into_item_bytes().map_err(Error::from))?; let genesis_core_height = u32::from_be_bytes(genesis_core_height_vec.try_into().map_err(|_| { diff --git a/packages/rs-drive/src/drive/platform_state/fetch_platform_state_bytes/v0/mod.rs b/packages/rs-drive/src/drive/platform_state/fetch_platform_state_bytes/v0/mod.rs index 7a0bf1f18c..4189b87495 100644 --- a/packages/rs-drive/src/drive/platform_state/fetch_platform_state_bytes/v0/mod.rs +++ b/packages/rs-drive/src/drive/platform_state/fetch_platform_state_bytes/v0/mod.rs @@ -11,6 +11,6 @@ impl Drive { self.grove .get_aux(PLATFORM_STATE_KEY, transaction) .unwrap() - .map_err(Error::GroveDB) + .map_err(Error::from) } } diff --git a/packages/rs-drive/src/drive/platform_state/store_platform_state_bytes/v0/mod.rs b/packages/rs-drive/src/drive/platform_state/store_platform_state_bytes/v0/mod.rs index 57401f43a6..00fa5edeef 100644 --- a/packages/rs-drive/src/drive/platform_state/store_platform_state_bytes/v0/mod.rs +++ b/packages/rs-drive/src/drive/platform_state/store_platform_state_bytes/v0/mod.rs @@ -12,6 +12,6 @@ impl Drive { self.grove .put_aux(PLATFORM_STATE_KEY, state_bytes, None, transaction) .unwrap() - .map_err(Error::GroveDB) + .map_err(Error::from) } } diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/mod.rs index bd67d17ac9..ca3be40aa3 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/mod.rs @@ -57,7 +57,7 @@ impl Drive { /// * `identity_id` - The ID of the Identity whose balance is to be fetched. /// * `block_info` - The information about the current block. /// * `apply` - Whether to actually run the query or just get the estimated costs that the query - /// would use. + /// would use. /// * `transaction` - The current transaction. /// * `platform_version` - The platform version to use. /// diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs index 134a05f582..df91b0682e 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs @@ -93,7 +93,14 @@ impl Drive { ) { Ok(Some(SumItem(balance, _))) if balance >= 0 => Ok(Some(balance as Credits)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => { + Ok(None) => { + if apply { + Ok(None) + } else { + Ok(Some(0)) + } + } + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { if apply { Ok(None) } else { diff --git a/packages/rs-drive/src/drive/protocol_upgrade/fetch_proved_validator_version_votes/mod.rs b/packages/rs-drive/src/drive/protocol_upgrade/fetch_proved_validator_version_votes/mod.rs index aba2c52abb..7cff28bf47 100644 --- a/packages/rs-drive/src/drive/protocol_upgrade/fetch_proved_validator_version_votes/mod.rs +++ b/packages/rs-drive/src/drive/protocol_upgrade/fetch_proved_validator_version_votes/mod.rs @@ -13,7 +13,7 @@ impl Drive { /// # Arguments /// /// * `start_protx_hash` - The first identifier to get vote_choices from. If none is set start from the - /// first item by ordered hash. + /// first item by ordered hash. /// * `count` - How many max items to retrieve. /// * `transaction` - A `TransactionArg` object representing the transaction. /// diff --git a/packages/rs-drive/src/drive/protocol_upgrade/fetch_validator_version_votes/mod.rs b/packages/rs-drive/src/drive/protocol_upgrade/fetch_validator_version_votes/mod.rs index f2bd0b430a..23e01a6d75 100644 --- a/packages/rs-drive/src/drive/protocol_upgrade/fetch_validator_version_votes/mod.rs +++ b/packages/rs-drive/src/drive/protocol_upgrade/fetch_validator_version_votes/mod.rs @@ -15,7 +15,7 @@ impl Drive { /// # Arguments /// /// * `start_protx_hash` - The first identifier to get votes from. If none is set start from the - /// first item by ordered hash. + /// first item by ordered hash. /// * `count` - How many max items to retrieve. /// * `transaction` - A `TransactionArg` object representing the transaction. /// diff --git a/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/mod.rs b/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/mod.rs index 1fc507bbff..08e96b7a07 100644 --- a/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/mod.rs +++ b/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/mod.rs @@ -14,13 +14,13 @@ impl Drive { /// # Arguments /// /// * `validator_pro_tx_hashes` - A vector of ProTx hashes representing the validators - /// whose proposed app versions should be removed. + /// whose proposed app versions should be removed. /// * `transaction` - A transaction argument to interact with the underlying storage. /// /// # Returns /// /// * `Result, Error>` - Returns the pro_tx_hashes of validators that were removed, - /// or an error if an issue was encountered. + /// or an error if an issue was encountered. /// /// # Errors /// diff --git a/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/v0/mod.rs b/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/v0/mod.rs index 871e5d7bce..d1705eb67f 100644 --- a/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/v0/mod.rs +++ b/packages/rs-drive/src/drive/protocol_upgrade/remove_validators_proposed_app_versions/v0/mod.rs @@ -7,7 +7,6 @@ use crate::drive::protocol_upgrade::{desired_version_for_validators_path, versio use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; -use crate::error::Error::GroveDB; use crate::fees::op::LowLevelDriveOperation; use crate::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; @@ -27,13 +26,13 @@ impl Drive { /// # Arguments /// /// * `validator_pro_tx_hashes` - A vector of ProTx hashes representing the validators - /// whose proposed app versions should be removed. + /// whose proposed app versions should be removed. /// * `transaction` - A transaction argument to interact with the underlying storage. /// /// # Returns /// /// * `Result, Error>` - Returns the pro_tx_hashes of validators that were removed, - /// or an error if an issue was encountered. + /// or an error if an issue was encountered. /// /// # Errors /// @@ -81,15 +80,15 @@ impl Drive { /// # Arguments /// /// * `validator_pro_tx_hashes` - An into iterator generic of ProTx hashes representing the validators - /// whose proposed app versions should be removed. + /// whose proposed app versions should be removed. /// * `transaction` - A transaction argument to interact with the underlying storage. /// * `drive_operations` - A mutable reference to a vector of low-level drive operations - /// that will be populated with the required changes. + /// that will be populated with the required changes. /// /// # Returns /// /// * `Result, Error>` - Returns the pro_tx_hashes of validators that were removed, - /// or an error if an issue was encountered. + /// or an error if an issue was encountered. /// /// # Errors /// @@ -131,7 +130,8 @@ impl Drive { if let Some(removed_element) = removed_element { removed_pro_tx_hashes.push(validator_pro_tx_hash); - let previous_version_bytes = removed_element.as_item_bytes().map_err(GroveDB)?; + let previous_version_bytes = + removed_element.as_item_bytes().map_err(Error::from)?; let previous_version = ProtocolVersion::decode_var(previous_version_bytes) .ok_or(Error::Drive(DriveError::CorruptedElementType( "encoded value could not be decoded", diff --git a/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/mod.rs b/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/mod.rs index 868528288d..20d5edacfb 100644 --- a/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/mod.rs +++ b/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/mod.rs @@ -20,7 +20,7 @@ impl Drive { /// # Returns /// /// * `Result` - Returns a boolean indicating if the value was changed, - /// or an error if an issue was encountered. + /// or an error if an issue was encountered. /// /// # Errors /// @@ -63,12 +63,12 @@ impl Drive { /// * `version` - The proposed app version to be set. /// * `transaction` - A transaction argument to interact with the underlying storage. /// * `drive_operations` - A mutable reference to a vector of low-level drive operations - /// that will be populated with the required changes. + /// that will be populated with the required changes. /// /// # Returns /// /// * `Result` - Returns a boolean indicating if the value was changed, - /// or an error if an issue was encountered. + /// or an error if an issue was encountered. /// /// # Errors /// diff --git a/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/v0/mod.rs b/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/v0/mod.rs index 6556ce2a41..2f72aae851 100644 --- a/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/v0/mod.rs +++ b/packages/rs-drive/src/drive/protocol_upgrade/update_validator_proposed_app_version/v0/mod.rs @@ -5,7 +5,6 @@ use crate::drive::protocol_upgrade::{desired_version_for_validators_path, versio use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; -use crate::error::Error::GroveDB; use crate::fees::op::LowLevelDriveOperation; use crate::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; @@ -84,7 +83,8 @@ impl Drive { if value_changed { // if we had a different previous version we need to remove it from the version counter if let Some(previous_element) = previous_element { - let previous_version_bytes = previous_element.as_item_bytes().map_err(GroveDB)?; + let previous_version_bytes = + previous_element.as_item_bytes().map_err(Error::from)?; let previous_version = ProtocolVersion::decode_var(previous_version_bytes) .ok_or(Error::Drive(DriveError::CorruptedElementType( "encoded value could not be decoded", diff --git a/packages/rs-drive/src/drive/system/protocol_version/fetch_current_protocol_version.rs b/packages/rs-drive/src/drive/system/protocol_version/fetch_current_protocol_version.rs index 12a8ff829b..bfcda0ceb6 100644 --- a/packages/rs-drive/src/drive/system/protocol_version/fetch_current_protocol_version.rs +++ b/packages/rs-drive/src/drive/system/protocol_version/fetch_current_protocol_version.rs @@ -42,7 +42,7 @@ impl Drive { grove .get_aux(PROTOCOL_VERSION_AUX_KEY, transaction) .unwrap() - .map_err(Error::GroveDB) + .map_err(Error::from) .map(|bytes| { bytes .map(|bytes| { diff --git a/packages/rs-drive/src/drive/system/protocol_version/store_current_protocol_version.rs b/packages/rs-drive/src/drive/system/protocol_version/store_current_protocol_version.rs index c63987cd9b..4a15303ed2 100644 --- a/packages/rs-drive/src/drive/system/protocol_version/store_current_protocol_version.rs +++ b/packages/rs-drive/src/drive/system/protocol_version/store_current_protocol_version.rs @@ -24,6 +24,6 @@ impl Drive { transaction, ) .unwrap() - .map_err(Error::GroveDB) + .map_err(Error::from) } } diff --git a/packages/rs-drive/src/drive/tokens/balance/fetch_identity_token_balance/v0/mod.rs b/packages/rs-drive/src/drive/tokens/balance/fetch_identity_token_balance/v0/mod.rs index 3a85fb330a..cef7d8b9da 100644 --- a/packages/rs-drive/src/drive/tokens/balance/fetch_identity_token_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/balance/fetch_identity_token_balance/v0/mod.rs @@ -59,7 +59,7 @@ impl Drive { ) { Ok(Some(SumItem(balance, _))) if balance >= 0 => Ok(Some(balance as TokenAmount)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => { + Ok(None) => { // If we are applying (stateful), no balance means None. // If we are estimating (stateless), return Some(0) to indicate no cost or minimal cost scenario. if apply { @@ -68,6 +68,13 @@ impl Drive { Ok(Some(0)) } } + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + if apply { + Ok(None) + } else { + Ok(Some(0)) + } + } Ok(Some(SumItem(..))) => Err(Error::Drive(DriveError::CorruptedElementType( "identity token balance was present but was negative", diff --git a/packages/rs-drive/src/drive/tokens/contract_info/fetch_token_contract_info/v0/mod.rs b/packages/rs-drive/src/drive/tokens/contract_info/fetch_token_contract_info/v0/mod.rs index 79a705050f..da1a6daeed 100644 --- a/packages/rs-drive/src/drive/tokens/contract_info/fetch_token_contract_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/contract_info/fetch_token_contract_info/v0/mod.rs @@ -58,7 +58,10 @@ impl Drive { info.as_slice(), )?)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => Ok(None), + Ok(None) => Ok(None), + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + Ok(None) + } Ok(Some(_)) => Err(Error::Drive(DriveError::CorruptedElementType( "contract token info was present but was not an item", diff --git a/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs b/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs index d51a4dc985..f2cb469944 100644 --- a/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs @@ -58,7 +58,10 @@ impl Drive { info.as_slice(), )?)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => Ok(None), + Ok(None) => Ok(None), + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + Ok(None) + } Ok(Some(_)) => Err(Error::Drive(DriveError::CorruptedElementType( "token direct_purchase_price was present but was not an item", diff --git a/packages/rs-drive/src/drive/tokens/distribution/add_pre_programmed_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/add_pre_programmed_distribution/v0/mod.rs index 638207d9f5..f88359b591 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/add_pre_programmed_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/add_pre_programmed_distribution/v0/mod.rs @@ -234,9 +234,9 @@ impl Drive { for (recipient, amount) in distribution { if *amount > i64::MAX as u64 { - return Err(Error::Protocol(ProtocolError::Overflow( + return Err(Error::Protocol(Box::new(ProtocolError::Overflow( "distribution amount over i64::Max", - ))); + )))); } // We use a sum tree to be able to ask "at this time how much was distributed" self.batch_insert( diff --git a/packages/rs-drive/src/drive/tokens/distribution/fetch/perpetual_distribution_last_paid_moment/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/fetch/perpetual_distribution_last_paid_moment/v0/mod.rs index 49eb265480..2024a8e5ae 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/fetch/perpetual_distribution_last_paid_moment/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/fetch/perpetual_distribution_last_paid_moment/v0/mod.rs @@ -56,7 +56,10 @@ impl Drive { ) { Ok(Some(Item(value, _))) => Ok(Some(value)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => Ok(None), + Ok(None) => Ok(None), + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + Ok(None) + } Ok(Some(_)) => Err(Error::Drive(DriveError::CorruptedElementType( "Last moment was present but was not an item", diff --git a/packages/rs-drive/src/drive/tokens/distribution/fetch/pre_programmed_distribution_last_paid_time_ms/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/fetch/pre_programmed_distribution_last_paid_time_ms/v0/mod.rs index 68abd8a4bf..f45f4a53ef 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/fetch/pre_programmed_distribution_last_paid_time_ms/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/fetch/pre_programmed_distribution_last_paid_time_ms/v0/mod.rs @@ -61,7 +61,10 @@ impl Drive { Ok(Some(u64::from_be_bytes(array))) } - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => Ok(None), + Ok(None) => Ok(None), + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + Ok(None) + } Ok(Some(_)) => Err(Error::Drive(DriveError::CorruptedElementType( "Last moment was present but was not an item", diff --git a/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs b/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs index e923a435d9..241b65e499 100644 --- a/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs @@ -61,7 +61,10 @@ impl Drive { info.as_slice(), )?)), - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => Ok(None), + Ok(None) => Ok(None), + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + Ok(None) + } Ok(Some(_)) => Err(Error::Drive(DriveError::CorruptedElementType( "identity token info was present but was not an item", diff --git a/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs b/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs index db71c1cd7e..7a8de7f45f 100644 --- a/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs @@ -58,7 +58,10 @@ impl Drive { Ok(Some(TokenStatus::deserialize_from_bytes(info.as_slice())?)) } - Ok(None) | Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) => Ok(None), + Ok(None) => Ok(None), + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { + Ok(None) + } Ok(Some(_)) => Err(Error::Drive(DriveError::CorruptedElementType( "token status was present but was not an item", diff --git a/packages/rs-drive/src/drive/votes/insert/contested_resource/individual_vote/register_contested_resource_identity_vote/v0/mod.rs b/packages/rs-drive/src/drive/votes/insert/contested_resource/individual_vote/register_contested_resource_identity_vote/v0/mod.rs index e478a8f12f..ff920c24f0 100644 --- a/packages/rs-drive/src/drive/votes/insert/contested_resource/individual_vote/register_contested_resource_identity_vote/v0/mod.rs +++ b/packages/rs-drive/src/drive/votes/insert/contested_resource/individual_vote/register_contested_resource_identity_vote/v0/mod.rs @@ -148,10 +148,10 @@ impl Drive { identity_vote_times, }; let encoded_reference = bincode::encode_to_vec(storage_form, config).map_err(|e| { - Error::Protocol(ProtocolError::CorruptedSerialization(format!( + Error::Protocol(Box::new(ProtocolError::CorruptedSerialization(format!( "can not encode reference: {}", e - ))) + )))) })?; self.batch_insert::<0>( diff --git a/packages/rs-drive/src/drive/votes/paths.rs b/packages/rs-drive/src/drive/votes/paths.rs index 7c20ebc6ef..0b15ab8000 100644 --- a/packages/rs-drive/src/drive/votes/paths.rs +++ b/packages/rs-drive/src/drive/votes/paths.rs @@ -173,7 +173,7 @@ impl VotePollPaths for ContestedDocumentResourceVotePollWithContractInfo { .map(|(IndexProperty { name, .. }, value)| { document_type .serialize_value_for_key(name, value, platform_version) - .map_err(Error::Protocol) + .map_err(Error::from) }) .collect::>, Error>>()?, ); @@ -259,7 +259,7 @@ impl VotePollPaths for ContestedDocumentResourceVotePollWithContractInfoAllowBor .map(|(IndexProperty { name, .. }, value)| { document_type .serialize_value_for_key(name, value, platform_version) - .map_err(Error::Protocol) + .map_err(Error::from) }) .collect::>, Error>>()?, ); diff --git a/packages/rs-drive/src/drive/votes/resolved/vote_polls/contested_document_resource_vote_poll/mod.rs b/packages/rs-drive/src/drive/votes/resolved/vote_polls/contested_document_resource_vote_poll/mod.rs index 037e90b6f3..43a3e1cbd3 100644 --- a/packages/rs-drive/src/drive/votes/resolved/vote_polls/contested_document_resource_vote_poll/mod.rs +++ b/packages/rs-drive/src/drive/votes/resolved/vote_polls/contested_document_resource_vote_poll/mod.rs @@ -261,7 +261,7 @@ impl ContestedDocumentResourceVotePollWithContractInfo { self.contract .as_ref() .document_type_for_name(self.document_type_name.as_str()) - .map_err(|e| Error::Protocol(ProtocolError::DataContractError(e))) + .map_err(|e| Error::Protocol(Box::new(ProtocolError::DataContractError(e)))) } /// Borrows a reference to the document type associated with the document type name. @@ -279,7 +279,7 @@ impl ContestedDocumentResourceVotePollWithContractInfo { self.contract .as_ref() .document_type_borrowed_for_name(self.document_type_name.as_str()) - .map_err(|e| Error::Protocol(ProtocolError::DataContractError(e))) + .map_err(|e| Error::Protocol(Box::new(ProtocolError::DataContractError(e)))) } } @@ -321,7 +321,7 @@ impl ContestedDocumentResourceVotePollWithContractInfoAllowBorrowed<'_> { self.contract .as_ref() .document_type_for_name(self.document_type_name.as_str()) - .map_err(|e| Error::Protocol(ProtocolError::DataContractError(e))) + .map_err(|e| Error::Protocol(Box::new(ProtocolError::DataContractError(e)))) } /// Borrows a reference to the document type associated with the document type name. @@ -339,6 +339,6 @@ impl ContestedDocumentResourceVotePollWithContractInfoAllowBorrowed<'_> { self.contract .as_ref() .document_type_borrowed_for_name(self.document_type_name.as_str()) - .map_err(|e| Error::Protocol(ProtocolError::DataContractError(e))) + .map_err(|e| Error::Protocol(Box::new(ProtocolError::DataContractError(e)))) } } diff --git a/packages/rs-drive/src/error/mod.rs b/packages/rs-drive/src/error/mod.rs index 5b71a107b6..0c016c0642 100644 --- a/packages/rs-drive/src/error/mod.rs +++ b/packages/rs-drive/src/error/mod.rs @@ -45,10 +45,10 @@ pub enum Error { Proof(#[from] ProofError), /// GroveDB error #[error("grovedb: {0}")] - GroveDB(#[from] grovedb::Error), + GroveDB(Box), /// Protocol error #[error("protocol: {0}")] - Protocol(#[from] ProtocolError), + Protocol(Box), /// Identity error #[error("identity: {0}")] Identity(#[from] IdentityError), @@ -69,11 +69,23 @@ pub enum Error { Cache(#[from] CacheError), /// Protocol error #[error("protocol: {0} ({1})")] - ProtocolWithInfoString(ProtocolError, String), + ProtocolWithInfoString(Box, String), } impl From for Error { fn from(value: ProtocolDataContractError) -> Self { - Self::Protocol(ProtocolError::DataContractError(value)) + Self::Protocol(Box::new(ProtocolError::DataContractError(value))) + } +} + +impl From for Error { + fn from(value: ProtocolError) -> Self { + Self::Protocol(Box::new(value)) + } +} + +impl From for Error { + fn from(value: grovedb::Error) -> Self { + Self::GroveDB(Box::new(value)) } } diff --git a/packages/rs-drive/src/lib.rs b/packages/rs-drive/src/lib.rs index 8337e87fda..70e48ea901 100644 --- a/packages/rs-drive/src/lib.rs +++ b/packages/rs-drive/src/lib.rs @@ -5,6 +5,7 @@ #![cfg_attr(docsrs, feature(doc_cfg))] // Coding conventions +#![allow(clippy::result_large_err)] #![forbid(unsafe_code)] #![deny(missing_docs)] diff --git a/packages/rs-drive/src/prove/prove_multiple_state_transition_results/v0/mod.rs b/packages/rs-drive/src/prove/prove_multiple_state_transition_results/v0/mod.rs index cf792e5ea4..7f377a4a7b 100644 --- a/packages/rs-drive/src/prove/prove_multiple_state_transition_results/v0/mod.rs +++ b/packages/rs-drive/src/prove/prove_multiple_state_transition_results/v0/mod.rs @@ -155,7 +155,7 @@ impl Drive { path_queries.iter().collect(), &platform_version.drive.grove_version, ) - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; self.grove_get_proved_path_query( &path_query, diff --git a/packages/rs-drive/src/query/contested_resource_votes_given_by_identity_query.rs b/packages/rs-drive/src/query/contested_resource_votes_given_by_identity_query.rs index 05c5ad8cfe..f0ca0e6d60 100644 --- a/packages/rs-drive/src/query/contested_resource_votes_given_by_identity_query.rs +++ b/packages/rs-drive/src/query/contested_resource_votes_given_by_identity_query.rs @@ -148,9 +148,16 @@ impl ContestedResourceVotesGivenByIdentityQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(BTreeMap::new()), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(BTreeMap::new()) + } Err(e) => Err(e), Ok((query_result_elements, _)) => { let voters = @@ -213,9 +220,14 @@ impl ContestedResourceVotesGivenByIdentityQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => { + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { Ok((QueryResultElements::new(), 0)) } _ => { diff --git a/packages/rs-drive/src/query/drive_contested_document_query.rs b/packages/rs-drive/src/query/drive_contested_document_query.rs index da16160995..e7a803e7fc 100644 --- a/packages/rs-drive/src/query/drive_contested_document_query.rs +++ b/packages/rs-drive/src/query/drive_contested_document_query.rs @@ -148,9 +148,16 @@ impl DriveContestedDocumentQuery<'_> { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok((Vec::new(), 0)), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok((Vec::new(), 0)) + } _ => { let (data, skipped) = query_result?; { diff --git a/packages/rs-drive/src/query/mod.rs b/packages/rs-drive/src/query/mod.rs index de5578dee1..ae609403d3 100644 --- a/packages/rs-drive/src/query/mod.rs +++ b/packages/rs-drive/src/query/mod.rs @@ -465,7 +465,7 @@ impl<'a> DriveDocumentQuery<'a> { ) -> Result { if let Some(contract_id) = query_document .remove_optional_identifier("contract_id") - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e)))? + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e))))? { if contract.id() != contract_id { return Err(ProtocolError::IdentifierError(format!( @@ -479,7 +479,7 @@ impl<'a> DriveDocumentQuery<'a> { if let Some(document_type_name) = query_document .remove_optional_string("document_type_name") - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e)))? + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e))))? { if document_type.name() != &document_type_name { return Err(ProtocolError::IdentifierError(format!( @@ -493,7 +493,7 @@ impl<'a> DriveDocumentQuery<'a> { let maybe_limit: Option = query_document .remove_optional_integer("limit") - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e)))?; + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e))))?; let limit = maybe_limit .map_or(Some(config.default_query_limit), |limit_value| { @@ -510,11 +510,11 @@ impl<'a> DriveDocumentQuery<'a> { let offset: Option = query_document .remove_optional_integer("offset") - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e)))?; + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e))))?; let block_time_ms: Option = query_document .remove_optional_integer("blockTime") - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e)))?; + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e))))?; let all_where_clauses: Vec = query_document @@ -565,7 +565,7 @@ impl<'a> DriveDocumentQuery<'a> { let start_at: Option<[u8; 32]> = start_option .map(|v| { v.into_identifier() - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e))) + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e)))) .map(|identifier| identifier.into_buffer()) }) .transpose()?; @@ -581,7 +581,7 @@ impl<'a> DriveDocumentQuery<'a> { if let Value::Array(clauses_components) = order_clause { let order_clause = OrderClause::from_components(&clauses_components) - .map_err(Error::GroveDB); + .map_err(Error::from); match order_clause { Ok(order_clause) => { Some(Ok((order_clause.field.clone(), order_clause))) @@ -846,7 +846,7 @@ impl<'a> DriveDocumentQuery<'a> { let start_at: Option<[u8; 32]> = start_option .map(|v| { v.into_identifier() - .map_err(|e| Error::Protocol(ProtocolError::ValueError(e))) + .map_err(|e| Error::Protocol(Box::new(ProtocolError::ValueError(e)))) .map(|identifier| identifier.into_buffer()) }) .transpose()?; @@ -945,9 +945,14 @@ impl<'a> DriveDocumentQuery<'a> { drive_version, ) .map_err(|e| match e { - Error::GroveDB(GroveError::PathKeyNotFound(_)) - | Error::GroveDB(GroveError::PathNotFound(_)) - | Error::GroveDB(GroveError::PathParentLayerNotFound(_)) => { + Error::GroveDB(e) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { let error_message = if self.start_at_included { "startAt document not found" } else { @@ -1002,7 +1007,7 @@ impl<'a> DriveDocumentQuery<'a> { vec![&start_at_path_query, &main_path_query], &platform_version.drive.grove_version, ) - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; merged.query.limit = limit.map(|a| a.saturating_add(1)); Ok(merged) } else { @@ -1854,7 +1859,7 @@ impl<'a> DriveDocumentQuery<'a> { } }) .collect::>, ProtocolError>>() - .map_err(Error::Protocol)?; + .map_err(Error::from)?; let final_query = match last_clause { None => { @@ -2162,9 +2167,16 @@ impl<'a> DriveDocumentQuery<'a> { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok((Vec::new(), 0)), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok((Vec::new(), 0)) + } _ => { let (data, skipped) = query_result?; { @@ -2199,9 +2211,14 @@ impl<'a> DriveDocumentQuery<'a> { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => { + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { Ok((QueryResultElements::new(), 0)) } _ => { diff --git a/packages/rs-drive/src/query/single_document_drive_query.rs b/packages/rs-drive/src/query/single_document_drive_query.rs index 8877480d87..58352ed6ad 100644 --- a/packages/rs-drive/src/query/single_document_drive_query.rs +++ b/packages/rs-drive/src/query/single_document_drive_query.rs @@ -74,7 +74,7 @@ impl SingleDocumentDriveQuery { vec![&non_contested, &contested], &platform_version.drive.grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) } SingleDocumentDriveQueryContestedStatus::Contested => { Ok(self.construct_contested_path_query(true)) diff --git a/packages/rs-drive/src/query/vote_poll_contestant_votes_query.rs b/packages/rs-drive/src/query/vote_poll_contestant_votes_query.rs index 1c940ebdfd..c5aa0f88ce 100644 --- a/packages/rs-drive/src/query/vote_poll_contestant_votes_query.rs +++ b/packages/rs-drive/src/query/vote_poll_contestant_votes_query.rs @@ -214,9 +214,16 @@ impl ContestedDocumentVotePollVotesDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(vec![]), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(vec![]) + } Err(e) => Err(e), Ok((query_result_elements, _skipped)) => { let voters = query_result_elements @@ -251,9 +258,14 @@ impl ContestedDocumentVotePollVotesDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => { + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { Ok((QueryResultElements::new(), 0)) } _ => { diff --git a/packages/rs-drive/src/query/vote_poll_vote_state_query.rs b/packages/rs-drive/src/query/vote_poll_vote_state_query.rs index e3ca1cb5d8..4915267810 100644 --- a/packages/rs-drive/src/query/vote_poll_vote_state_query.rs +++ b/packages/rs-drive/src/query/vote_poll_vote_state_query.rs @@ -533,9 +533,14 @@ impl ResolvedContestedDocumentVotePollDriveQuery<'_> { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => { + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { Ok(ContestedDocumentVotePollDriveQueryExecutionResult::default()) } Err(e) => Err(e), diff --git a/packages/rs-drive/src/query/vote_polls_by_document_type_query.rs b/packages/rs-drive/src/query/vote_polls_by_document_type_query.rs index 3df0ac8b70..59458a4c22 100644 --- a/packages/rs-drive/src/query/vote_polls_by_document_type_query.rs +++ b/packages/rs-drive/src/query/vote_polls_by_document_type_query.rs @@ -480,9 +480,16 @@ impl<'a> ResolvedVotePollsByDocumentTypeQuery<'a> { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(vec![]), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(vec![]) + } Err(e) => Err(e), Ok((query_result_elements, _)) => { let result_is_in_key = self.result_is_in_key(); @@ -500,7 +507,7 @@ impl<'a> ResolvedVotePollsByDocumentTypeQuery<'a> { // the result is in the key because we did not provide any end index values // like this <------ start index values (path) ---> Key // properties ------- --------- --------- ---------- ------- - document_type.deserialize_value_for_key(property_name_being_searched.name.as_str(), key.as_slice(), platform_version).map_err(Error::Protocol) + document_type.deserialize_value_for_key(property_name_being_searched.name.as_str(), key.as_slice(), platform_version).map_err(Error::from) } else if path.len() < result_path_index.unwrap() { Err(Error::Drive(DriveError::CorruptedCodeExecution("the path length should always be bigger or equal to the result path index"))) @@ -509,7 +516,7 @@ impl<'a> ResolvedVotePollsByDocumentTypeQuery<'a> { // like this <------ start index values (path) ---> Key // properties ------- --------- --------- ---------- ------- let inner_path_value_bytes = path.remove(result_path_index.unwrap()); - document_type.deserialize_value_for_key(property_name_being_searched.name.as_str(), inner_path_value_bytes.as_slice(), platform_version).map_err(Error::Protocol) + document_type.deserialize_value_for_key(property_name_being_searched.name.as_str(), inner_path_value_bytes.as_slice(), platform_version).map_err(Error::from) } }).collect::, Error>>() } diff --git a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs index c702496708..21d859fd66 100644 --- a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs +++ b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs @@ -117,9 +117,16 @@ impl VotePollsByEndDateDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(BTreeMap::new()), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(BTreeMap::new()) + } Err(e) => Err(e), Ok((query_result_elements, _)) => { let vote_polls_by_end_date = query_result_elements @@ -173,9 +180,16 @@ impl VotePollsByEndDateDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(vec![]), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(vec![]) + } Err(e) => Err(e), Ok((query_result_elements, _)) => { // Process the query result elements and collect VotePolls @@ -347,9 +361,16 @@ impl VotePollsByEndDateDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(BTreeMap::new()), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(BTreeMap::new()) + } Err(e) => Err(e), Ok((query_result_elements, _)) => { let vote_polls_by_end_date = query_result_elements @@ -401,9 +422,16 @@ impl VotePollsByEndDateDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => Ok(BTreeMap::new()), + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { + Ok(BTreeMap::new()) + } Err(e) => Err(e), Ok((query_result_elements, _)) => { let vote_polls_by_end_date = query_result_elements @@ -455,9 +483,14 @@ impl VotePollsByEndDateDriveQuery { &platform_version.drive, ); match query_result { - Err(Error::GroveDB(GroveError::PathKeyNotFound(_))) - | Err(Error::GroveDB(GroveError::PathNotFound(_))) - | Err(Error::GroveDB(GroveError::PathParentLayerNotFound(_))) => { + Err(Error::GroveDB(e)) + if matches!( + e.as_ref(), + GroveError::PathKeyNotFound(_) + | GroveError::PathNotFound(_) + | GroveError::PathParentLayerNotFound(_) + ) => + { Ok(QueryResultElements::new()) } _ => { diff --git a/packages/rs-drive/src/state_transition_action/action_convert_to_operations/identity/masternode_vote_transition.rs b/packages/rs-drive/src/state_transition_action/action_convert_to_operations/identity/masternode_vote_transition.rs index 7009429822..eaa40adc96 100644 --- a/packages/rs-drive/src/state_transition_action/action_convert_to_operations/identity/masternode_vote_transition.rs +++ b/packages/rs-drive/src/state_transition_action/action_convert_to_operations/identity/masternode_vote_transition.rs @@ -31,7 +31,7 @@ impl DriveHighLevelOperationConverter for MasternodeVoteTransitionAction { let previous_resource_vote_choice_to_remove = self.take_previous_resource_vote_choice_to_remove(); let vote = self.vote_owned(); - let prefunded_specialized_balance_id = vote.specialized_balance_id()?.ok_or(Error::Protocol(ProtocolError::VoteError("vote does not have a specialized balance from where it can use to pay for processing (this should have been caught during validation)".to_string())))?; + let prefunded_specialized_balance_id = vote.specialized_balance_id()?.ok_or(Error::Protocol(Box::new(ProtocolError::VoteError("vote does not have a specialized balance from where it can use to pay for processing (this should have been caught during validation)".to_string()))))?; let drive_operations = vec![ IdentityOperation(IdentityOperationType::UpdateIdentityNonce { diff --git a/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/mod.rs b/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/mod.rs index cbbef1173c..ff3a9df2fe 100644 --- a/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/mod.rs +++ b/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/mod.rs @@ -174,7 +174,7 @@ impl TokenTransitionAction { block_info, platform_version, ) - .map_err(Error::Protocol) + .map_err(Error::from) } /// Do we keep history for this action diff --git a/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/token_base_transition_action/v0/mod.rs b/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/token_base_transition_action/v0/mod.rs index 470d3d16fc..fde27c6ae1 100644 --- a/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/token_base_transition_action/v0/mod.rs +++ b/packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/token_base_transition_action/v0/mod.rs @@ -101,11 +101,11 @@ impl TokenBaseTransitionActionAccessorsV0 for TokenBaseTransitionActionV0 { .contract .tokens() .get(&self.token_contract_position) - .ok_or(Error::Protocol(ProtocolError::CorruptedCodeExecution( - format!( + .ok_or(Error::Protocol(Box::new( + ProtocolError::CorruptedCodeExecution(format!( "data contract does not have a token at position {}", self.token_contract_position - ), + )), ))) } diff --git a/packages/rs-drive/src/state_transition_action/system/bump_identity_data_contract_nonce_action/transformer.rs b/packages/rs-drive/src/state_transition_action/system/bump_identity_data_contract_nonce_action/transformer.rs index 7e9b021b17..38a9d977f7 100644 --- a/packages/rs-drive/src/state_transition_action/system/bump_identity_data_contract_nonce_action/transformer.rs +++ b/packages/rs-drive/src/state_transition_action/system/bump_identity_data_contract_nonce_action/transformer.rs @@ -57,11 +57,11 @@ impl BumpIdentityDataContractNonceAction { user_fee_increase, )), BatchedTransitionAction::BumpIdentityDataContractNonce(_) => { - Err(Error::Protocol( + Err(Error::Protocol(Box::new( ProtocolError::CorruptedCodeExecution( "we should never be trying to convert from a BumpIdentityDataContractNonce to a BumpIdentityDataContractNonceAction".to_string(), ), - )) + ))) } } } @@ -86,11 +86,11 @@ impl BumpIdentityDataContractNonceAction { user_fee_increase, )), BatchedTransitionAction::BumpIdentityDataContractNonce(_) => { - Err(Error::Protocol( + Err(Error::Protocol(Box::new( ProtocolError::CorruptedCodeExecution( "we should never be trying to convert from a BumpIdentityDataContractNonce to a BumpIdentityDataContractNonceAction".to_string(), ), - )) + ))) } } } diff --git a/packages/rs-drive/src/util/batch/drive_op_batch/document.rs b/packages/rs-drive/src/util/batch/drive_op_batch/document.rs index ed95e0c5aa..9b31e43c56 100644 --- a/packages/rs-drive/src/util/batch/drive_op_batch/document.rs +++ b/packages/rs-drive/src/util/batch/drive_op_batch/document.rs @@ -52,6 +52,7 @@ pub struct DocumentOperationsForContractDocumentType<'a> { /// Operations on Documents #[derive(Clone, Debug)] +#[allow(clippy::large_enum_variant)] pub enum DocumentOperationType<'a> { /// Adds a document to a contract matching the desired info. AddDocument { diff --git a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs index 44c64473a8..acdc824eee 100644 --- a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs +++ b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs @@ -477,7 +477,7 @@ pub trait GroveDbOpBatchV0Methods { /// # Returns /// /// * `Option` - Returns the found `Op` if it exists. If the `Op` is an `GroveOp::InsertOrReplace`, `GroveOp::Replace`, - /// or `GroveOp::Patch`, it will be removed from the batch. + /// or `GroveOp::Patch`, it will be removed from the batch. fn remove_if_insert(&mut self, path: Vec>, key: &[u8]) -> Option; } @@ -669,7 +669,7 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { /// # Returns /// /// * `Option` - Returns the found `Op` if it exists. If the `Op` is an `GroveOp::InsertOrReplace`, `GroveOp::Replace`, - /// or `GroveOp::Patch`, it will be removed from the batch. + /// or `GroveOp::Patch`, it will be removed from the batch. fn remove_if_insert(&mut self, path: Vec>, key: &[u8]) -> Option { let path = KeyInfoPath( path.into_iter() diff --git a/packages/rs-drive/src/util/common/encode.rs b/packages/rs-drive/src/util/common/encode.rs index 005e701719..23e630743f 100644 --- a/packages/rs-drive/src/util/common/encode.rs +++ b/packages/rs-drive/src/util/common/encode.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Encoding helpers bubble up drive::Error with context //! Encoding. //! //! This module defines encoding functions. diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 9f81bdf698..bcece0fd51 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -227,7 +227,7 @@ mod tests { ); assert_matches!( get_result, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); } @@ -348,7 +348,7 @@ mod tests { ); assert_matches!( get_result_1, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); let get_result_2 = drive.grove_get( @@ -361,7 +361,7 @@ mod tests { ); assert_matches!( get_result_2, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); // Verify that key 3 is still there @@ -448,7 +448,7 @@ mod tests { ); assert_matches!( get_result, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); } @@ -484,7 +484,7 @@ mod tests { // Assert failure due to missing intermediate path assert_matches!( result, - Err(Error::GroveDB(grovedb::Error::PathParentLayerNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) ); } @@ -582,7 +582,7 @@ mod tests { ); assert_matches!( get_result, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); } } diff --git a/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/mod.rs index 87331adad0..e7b809e51f 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/mod.rs @@ -16,18 +16,18 @@ impl Drive { /// This operation either inserts a new sum item at the given path and key or adds the value to the existing sum item. /// /// # Parameters - /// * `path_key_element_info`: Information about the path, key, and element. - /// * `apply_type`: The apply type for the operation. - /// * `transaction`: The transaction argument for the operation. - /// * `drive_operations`: The list of drive operations to append to. - /// * `drive_version`: The drive version to select the correct function version to run. + /// - `path_key_element_info`: Information about the path, key, and element. + /// - `apply_type`: The apply type for the operation. + /// - `transaction`: The transaction argument for the operation. + /// - `drive_operations`: The list of drive operations to append to. + /// - `drive_version`: The drive version to select the correct function version to run. /// /// # Returns - /// * `Ok(())` if the operation was successful. - /// * `Err(DriveError::UnknownVersionMismatch)` if the drive version does not match known versions. - /// * `Err(DriveError::CorruptedCodeExecution)` (rare) if the operation is not supported. - /// * `Err(DriveError::CorruptedElementType)` (rare) if drive is in a corrupted state and - /// gives back an incorrect element type. + /// - `Ok(())` if the operation was successful. + /// - `Err(DriveError::UnknownVersionMismatch)` if the drive version does not match known versions. + /// - `Err(DriveError::CorruptedCodeExecution)` (rare) if the operation is not supported. + /// - `Err(DriveError::CorruptedElementType)` (rare) if drive is in a corrupted state and + /// gives back an incorrect element type. pub fn batch_insert_sum_item_or_add_to_if_already_exists( &self, path_key_element_info: PathKeyElementInfo, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index 794b50ede6..450b37add3 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -230,7 +230,7 @@ mod tests { ); assert_matches!( old_res, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); } @@ -279,7 +279,7 @@ mod tests { &platform_version.drive, ); - assert_matches!(res, Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_)))); + assert_matches!(res, Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_))); } /// Moving a subtree (tree element) must fail with NotSupported. diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index f4e6484861..c356e0e118 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -295,7 +295,7 @@ mod tests { ); assert_matches!( get_result_1_old, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); let get_result_2_old = drive.grove_get( @@ -308,7 +308,7 @@ mod tests { ); assert_matches!( get_result_2_old, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); } @@ -512,7 +512,7 @@ mod tests { ); assert_matches!( get_result_1_old, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); let get_result_2_old = drive.grove_get( @@ -525,7 +525,7 @@ mod tests { ); assert_matches!( get_result_2_old, - Err(Error::GroveDB(grovedb::Error::PathKeyNotFound(_))) + Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) ); // Verify that key 3 is still in the original path diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 89902830ef..c2c441cf7d 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -45,7 +45,7 @@ impl Drive { "we should not be seeing internal grovedb operations", ))); } - Some(GroveOp::Delete { .. }) | Some(GroveOp::DeleteTree { .. }) => false, + Some(GroveOp::Delete) | Some(GroveOp::DeleteTree(_)) => false, _ => true, }; diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index 3c212ba544..4d024ecc43 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -53,7 +53,7 @@ impl Drive { .grove .root_hash(transaction, &drive_version.grove_version) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; Some((ops.clone(), root_hash)) } else { @@ -91,7 +91,7 @@ impl Drive { .grove .root_hash(transaction, &drive_version.grove_version) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let (ops, previous_root_hash) = maybe_params_for_logs.expect("log params should be set above"); diff --git a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs index e1de93ec3a..ac452ab152 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs @@ -26,7 +26,7 @@ impl Drive { .grove .root_hash(transaction, &drive_version.grove_version) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; Some((path.clone(), root_hash)) } else { @@ -43,7 +43,7 @@ impl Drive { transaction, &drive_version.grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) .map(|_| ()); #[cfg(feature = "grovedb_operations_logging")] @@ -54,7 +54,7 @@ impl Drive { .grove .root_hash(transaction, &drive_version.grove_version) .unwrap() - .map_err(Error::GroveDB)?; + .map_err(Error::from)?; let (path, previous_root_hash) = maybe_params_for_logs.expect("log params should be set above"); diff --git a/packages/rs-drive/src/util/grove_operations/grove_get/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get/v0/mod.rs index 3baac60f01..4a06b5dacb 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get/v0/mod.rs @@ -61,7 +61,7 @@ impl Drive { self.grove .get(path, key, transaction, &drive_version.grove_version); drive_operations.push(CalculatedCostOperation(cost)); - Ok(Some(value.map_err(Error::GroveDB)?)) + Ok(Some(value.map_err(Error::from)?)) } } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_big_sum_tree_total_value/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_big_sum_tree_total_value/v0/mod.rs index 1266595f76..0aa50f7938 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_big_sum_tree_total_value/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_big_sum_tree_total_value/v0/mod.rs @@ -54,7 +54,7 @@ impl Drive { self.grove .get_raw(path, key, transaction, &drive_version.grove_version); drive_operations.push(CalculatedCostOperation(cost)); - let element = value.map_err(Error::GroveDB)?; + let element = value.map_err(Error::from)?; match element { Element::BigSumTree(_, value, _) => Ok(value), _ => Err(Error::Drive(DriveError::CorruptedBalancePath( diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_optional_sum_tree_total_value/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_optional_sum_tree_total_value/v0/mod.rs index 84cf54b563..5e8ba0da4c 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_optional_sum_tree_total_value/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_optional_sum_tree_total_value/v0/mod.rs @@ -57,7 +57,7 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - let Some(element) = value.map_err(Error::GroveDB)? else { + let Some(element) = value.map_err(Error::from)? else { return Ok(None); }; match element { diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_path_query/v0/mod.rs index 80a48f0509..076aeccfb6 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_path_query/v0/mod.rs @@ -28,6 +28,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_or_sum_results/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_or_sum_results/v0/mod.rs index 56625e4b2f..32cee7226f 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_or_sum_results/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_or_sum_results/v0/mod.rs @@ -26,6 +26,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_results/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_results/v0/mod.rs index cb58485487..dd0eee5f3c 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_results/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_path_query_serialized_results/v0/mod.rs @@ -25,6 +25,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_path_query_with_optional/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_path_query_with_optional/v0/mod.rs index e415fcd6f5..13276b7f0d 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_path_query_with_optional/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_path_query_with_optional/v0/mod.rs @@ -26,6 +26,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query/v0/mod.rs index ecc4d49907..726f3da9bb 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query/v0/mod.rs @@ -25,6 +25,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query_with_conditional/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query_with_conditional/v0/mod.rs index 40a47aa901..4fdf3588ee 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query_with_conditional/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_proved_path_query_with_conditional/v0/mod.rs @@ -25,7 +25,7 @@ impl Drive { self.grove .get_raw_optional(root_path, key, transaction, &drive_version.grove_version); drive_operations.push(CalculatedCostOperation(cost)); - let maybe_element = value.map_err(Error::GroveDB)?; + let maybe_element = value.map_err(Error::from)?; let path_query = path_query_resolver(maybe_element); let CostContext { value, cost } = self.grove.get_proved_path_query( @@ -35,6 +35,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_raw/v0/mod.rs index 0d6778540c..b5e3a34bd3 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_raw/v0/mod.rs @@ -59,7 +59,7 @@ impl Drive { self.grove .get_raw(path, key, transaction, &drive_version.grove_version); drive_operations.push(CalculatedCostOperation(cost)); - Ok(Some(value.map_err(Error::GroveDB)?)) + Ok(Some(value.map_err(Error::from)?)) } } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_raw_item/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_raw_item/v0/mod.rs index 4f7dc34a36..5f7a9c8c2a 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_raw_item/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_raw_item/v0/mod.rs @@ -65,7 +65,7 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - let element = value.map_err(Error::GroveDB)?; + let element = value.map_err(Error::from)?; match element { Element::Item(value, _) => Ok(value), _ => Err(Error::Drive(DriveError::CorruptedDriveState(format!( diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional/v0/mod.rs index 90e2b2b004..6865fa08c0 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional/v0/mod.rs @@ -62,7 +62,7 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - Ok(value.map_err(Error::GroveDB)?) + Ok(value.map_err(Error::from)?) } } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional_item/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional_item/v0/mod.rs index 3ca57601fd..1fdb452a75 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional_item/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_raw_optional_item/v0/mod.rs @@ -65,7 +65,7 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - let element = value.map_err(Error::GroveDB)?; + let element = value.map_err(Error::from)?; match element { Some(Element::Item(value, _)) => Ok(Some(value)), None => Ok(None), diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query/v0/mod.rs index 2deec8ba8b..a3ffdc3890 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query/v0/mod.rs @@ -28,6 +28,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query_with_optional/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query_with_optional/v0/mod.rs index 1e852fcb77..7bef651bb7 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query_with_optional/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_raw_path_query_with_optional/v0/mod.rs @@ -27,6 +27,6 @@ impl Drive { &drive_version.grove_version, ); drive_operations.push(CalculatedCostOperation(cost)); - value.map_err(Error::GroveDB) + value.map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/grove_operations/grove_get_sum_tree_total_value/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_get_sum_tree_total_value/v0/mod.rs index b62ba829ba..9b2f69aec9 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_get_sum_tree_total_value/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_get_sum_tree_total_value/v0/mod.rs @@ -54,7 +54,7 @@ impl Drive { self.grove .get_raw(path, key, transaction, &drive_version.grove_version); drive_operations.push(CalculatedCostOperation(cost)); - let element = value.map_err(Error::GroveDB)?; + let element = value.map_err(Error::from)?; match element { Element::SumTree(_, value, _) => Ok(value), _ => Err(Error::Drive(DriveError::CorruptedBalancePath( diff --git a/packages/rs-drive/src/util/grove_operations/mod.rs b/packages/rs-drive/src/util/grove_operations/mod.rs index b9fc2d28d9..1857f52dd7 100644 --- a/packages/rs-drive/src/util/grove_operations/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/mod.rs @@ -167,7 +167,7 @@ fn push_drive_operation_result( if !cost.is_nothing() { drive_operations.push(CalculatedCostOperation(cost)); } - value.map_err(Error::GroveDB) + value.map_err(Error::from) } /// Pushes an operation's `OperationCost` to `drive_operations` given its `CostContext` @@ -180,7 +180,7 @@ fn push_drive_operation_result_optional( if let Some(drive_operations) = drive_operations { drive_operations.push(CalculatedCostOperation(cost)); } - value.map_err(Error::GroveDB) + value.map_err(Error::from) } /// Is subtree? pub type IsSubTree = bool; diff --git a/packages/rs-drive/src/util/object_size_info/contract_info.rs b/packages/rs-drive/src/util/object_size_info/contract_info.rs index 7fe5cc5839..2049b33bb8 100644 --- a/packages/rs-drive/src/util/object_size_info/contract_info.rs +++ b/packages/rs-drive/src/util/object_size_info/contract_info.rs @@ -43,7 +43,7 @@ pub enum DataContractInfo<'a> { /// An owned version of a data contract. This variant is used when full ownership /// and possibly mutability of the data contract is necessary. - OwnedDataContract(DataContract), + OwnedDataContract(Box), } impl<'a> DataContractInfo<'a> { @@ -99,7 +99,7 @@ pub enum DataContractOwnedResolvedInfo { /// An owned instance of a data contract. This variant provides full control /// and mutability over the data contract, suitable for scenarios requiring /// modifications or extended operations on the data contract. - OwnedDataContract(DataContract), + OwnedDataContract(Box), } impl DataContractOwnedResolvedInfo { @@ -135,7 +135,7 @@ impl DataContractOwnedResolvedInfo { DataContractOwnedResolvedInfo::DataContractFetchInfo(fetch_info) => { fetch_info.contract.clone() } - DataContractOwnedResolvedInfo::OwnedDataContract(owned) => owned, + DataContractOwnedResolvedInfo::OwnedDataContract(owned) => *owned, } } } @@ -160,7 +160,7 @@ pub enum DataContractResolvedInfo<'a> { /// An owned instance of a data contract. This variant provides full control /// and mutability over the data contract, suitable for scenarios requiring /// modifications or extended operations on the data contract. - OwnedDataContract(DataContract), + OwnedDataContract(Box), } impl<'a> From<&'a DataContractOwnedResolvedInfo> for DataContractResolvedInfo<'a> { diff --git a/packages/rs-drive/src/util/object_size_info/path_key_element_info.rs b/packages/rs-drive/src/util/object_size_info/path_key_element_info.rs index e461209a0d..1cd5e46096 100644 --- a/packages/rs-drive/src/util/object_size_info/path_key_element_info.rs +++ b/packages/rs-drive/src/util/object_size_info/path_key_element_info.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Internal helpers return drive::Error; size acceptable here use crate::error::drive::DriveError; use crate::error::Error; use crate::util::object_size_info::path_key_element_info::PathKeyElementInfo::{ diff --git a/packages/rs-drive/src/util/object_size_info/path_key_info.rs b/packages/rs-drive/src/util/object_size_info/path_key_info.rs index 9791705df3..a7f18fbdc9 100644 --- a/packages/rs-drive/src/util/object_size_info/path_key_info.rs +++ b/packages/rs-drive/src/util/object_size_info/path_key_info.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Internal helpers return drive::Error; size acceptable here use crate::error::drive::DriveError; use crate::error::Error; use crate::util::object_size_info::path_key_info::PathKeyInfo::{ diff --git a/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/mod.rs b/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/mod.rs index 53c1334cab..5ab4d58ab5 100644 --- a/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/mod.rs +++ b/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Operation application returns drive::Error with rich causes mod v0; use crate::drive::Drive; diff --git a/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/v0/mod.rs b/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/v0/mod.rs index 22622d5adf..d9a48395e6 100644 --- a/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/v0/mod.rs +++ b/packages/rs-drive/src/util/operations/apply_batch_grovedb_operations/v0/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Operation application returns drive::Error with rich causes use crate::drive::Drive; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; diff --git a/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/mod.rs b/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/mod.rs index 64537fa544..547b156d96 100644 --- a/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/mod.rs +++ b/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Operation application returns drive::Error with rich causes mod v0; use crate::drive::Drive; diff --git a/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/v0/mod.rs b/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/v0/mod.rs index 74c318ee83..4367f56b14 100644 --- a/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/v0/mod.rs +++ b/packages/rs-drive/src/util/operations/apply_batch_low_level_drive_operations/v0/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Operation application returns drive::Error with rich causes use crate::drive::Drive; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; diff --git a/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/mod.rs b/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/mod.rs index 2023035043..0199be9567 100644 --- a/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/mod.rs +++ b/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Operation application returns drive::Error with rich causes mod v0; use crate::drive::Drive; diff --git a/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/v0/mod.rs b/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/v0/mod.rs index 129f74eb74..ff260a535b 100644 --- a/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/v0/mod.rs +++ b/packages/rs-drive/src/util/operations/apply_partial_batch_grovedb_operations/v0/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Operation application returns drive::Error with rich causes use crate::drive::Drive; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; diff --git a/packages/rs-drive/src/util/operations/commit_transaction/mod.rs b/packages/rs-drive/src/util/operations/commit_transaction/mod.rs index 2497052b6d..44fa4a277b 100644 --- a/packages/rs-drive/src/util/operations/commit_transaction/mod.rs +++ b/packages/rs-drive/src/util/operations/commit_transaction/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Transaction helpers bubble up drive::Error mod v0; use crate::drive::Drive; diff --git a/packages/rs-drive/src/util/operations/commit_transaction/v0/mod.rs b/packages/rs-drive/src/util/operations/commit_transaction/v0/mod.rs index c144485b84..3a89a86e08 100644 --- a/packages/rs-drive/src/util/operations/commit_transaction/v0/mod.rs +++ b/packages/rs-drive/src/util/operations/commit_transaction/v0/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Transaction helpers bubble up drive::Error use crate::drive::Drive; use crate::error::Error; use grovedb::Transaction; @@ -9,6 +10,6 @@ impl Drive { .commit_transaction(transaction) .unwrap() // TODO: discuss what to do with transaction cost as costs are // returned in advance on transaction operations not on commit - .map_err(Error::GroveDB) + .map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/operations/rollback_transaction/mod.rs b/packages/rs-drive/src/util/operations/rollback_transaction/mod.rs index 8b68ca9e5a..32f2909475 100644 --- a/packages/rs-drive/src/util/operations/rollback_transaction/mod.rs +++ b/packages/rs-drive/src/util/operations/rollback_transaction/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Transaction helpers bubble up drive::Error mod v0; use crate::drive::Drive; diff --git a/packages/rs-drive/src/util/operations/rollback_transaction/v0/mod.rs b/packages/rs-drive/src/util/operations/rollback_transaction/v0/mod.rs index 57b1e26959..8ac7d9303a 100644 --- a/packages/rs-drive/src/util/operations/rollback_transaction/v0/mod.rs +++ b/packages/rs-drive/src/util/operations/rollback_transaction/v0/mod.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Transaction helpers bubble up drive::Error use crate::drive::Drive; use crate::error::Error; use grovedb::Transaction; @@ -7,6 +8,6 @@ impl Drive { pub(crate) fn rollback_transaction_v0(&self, transaction: &Transaction) -> Result<(), Error> { self.grove .rollback_transaction(transaction) - .map_err(Error::GroveDB) + .map_err(Error::from) } } diff --git a/packages/rs-drive/src/util/test_helpers/test_utils/identities.rs b/packages/rs-drive/src/util/test_helpers/test_utils/identities.rs index ac82a03462..c917ebae8f 100644 --- a/packages/rs-drive/src/util/test_helpers/test_utils/identities.rs +++ b/packages/rs-drive/src/util/test_helpers/test_utils/identities.rs @@ -1,3 +1,4 @@ +#![allow(clippy::result_large_err)] // Test helpers return drive::Error for convenience //! Drive Identity Helpers. //! //! This module defines helper functions pertinent to identities in Drive. diff --git a/packages/rs-drive/src/verify/contract/verify_contract/v0/mod.rs b/packages/rs-drive/src/verify/contract/verify_contract/v0/mod.rs index 9832f0e51e..93a15db637 100644 --- a/packages/rs-drive/src/verify/contract/verify_contract/v0/mod.rs +++ b/packages/rs-drive/src/verify/contract/verify_contract/v0/mod.rs @@ -4,7 +4,6 @@ use crate::drive::contract::paths::{contract_keeping_history_root_path, contract use crate::drive::Drive; use crate::error::proof::ProofError; use crate::error::Error; -use crate::error::Error::GroveDB; use crate::verify::RootHash; use dpp::prelude::DataContract; use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; @@ -68,7 +67,7 @@ impl Drive { &platform_version.drive.grove_version, ) }; - let (root_hash, mut proved_key_values) = match result.map_err(GroveDB) { + let (root_hash, mut proved_key_values) = match result.map_err(Error::from) { Ok(ok_result) => ok_result, Err(e) => { return if contract_known_keeps_history.is_none() { @@ -118,12 +117,12 @@ impl Drive { .map(|element| { element .into_item_bytes() - .map_err(Error::GroveDB) + .map_err(Error::from) .and_then(|bytes| { // we don't need to validate the contract locally because it was proved to be in platform // and hence it is valid DataContract::versioned_deserialize(&bytes, false, platform_version) - .map_err(Error::Protocol) + .map_err(Error::from) }) }) .transpose(); @@ -160,8 +159,8 @@ impl Drive { /// - `proof`: A byte slice representing the proof to be verified. /// - `is_proof_subset`: A boolean indicating whether to verify a subset of a larger proof. /// - `contract_ids_with_keeps_history` a BTreemap with keys being the contract ids we are looking - /// to search for, values being if they keep history. For this call we must know if they keep - /// history. + /// to search for, values being if they keep history. For this call we must know if they keep + /// history. /// /// # Returns /// diff --git a/packages/rs-drive/src/verify/contract/verify_contract_history/v0/mod.rs b/packages/rs-drive/src/verify/contract/verify_contract_history/v0/mod.rs index 18fea92ee4..5c58eb595d 100644 --- a/packages/rs-drive/src/verify/contract/verify_contract_history/v0/mod.rs +++ b/packages/rs-drive/src/verify/contract/verify_contract_history/v0/mod.rs @@ -69,12 +69,12 @@ impl Drive { .map(|element| { element .into_item_bytes() - .map_err(Error::GroveDB) + .map_err(Error::from) .and_then(|bytes| { // we don't need to validate the contract locally because it was proved to be in platform // and hence it is valid DataContract::versioned_deserialize(&bytes, false, platform_version) - .map_err(Error::Protocol) + .map_err(Error::from) }) }) .transpose()?; diff --git a/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/mod.rs b/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/mod.rs index 7f9eab5e09..6e57fabb44 100644 --- a/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/mod.rs +++ b/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/mod.rs @@ -7,6 +7,11 @@ use dpp::version::PlatformVersion; mod v0; +// Type aliases to simplify complex return types +type ContractBytes = Vec; +type VerifiedContractWithBytes = Option<(DataContract, ContractBytes)>; +type VerifyContractReturn = (RootHash, VerifiedContractWithBytes); + impl Drive { /// Verifies that the contract is included in the proof and returns the serialized form as well for easy storage. /// @@ -40,7 +45,7 @@ impl Drive { in_multiple_contract_proof_form: bool, contract_id: [u8; 32], platform_version: &PlatformVersion, - ) -> Result<(RootHash, Option<(DataContract, Vec)>), Error> { + ) -> Result { match platform_version .drive .methods diff --git a/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs b/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs index ecf85c6133..4d41dccfc6 100644 --- a/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs +++ b/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs @@ -9,6 +9,11 @@ use platform_version::version::PlatformVersion; use grovedb::GroveDb; +// Type aliases to simplify complex return types +type ContractBytes = Vec; +type VerifiedContractWithBytes = Option<(DataContract, ContractBytes)>; +type VerifyContractReturn = (RootHash, VerifiedContractWithBytes); + impl Drive { /// Verifies that the contract is included in the proof. /// @@ -38,7 +43,7 @@ impl Drive { in_multiple_contract_proof_form: bool, contract_id: [u8; 32], platform_version: &PlatformVersion, - ) -> Result<(RootHash, Option<(DataContract, Vec)>), Error> { + ) -> Result { let path_query = match ( in_multiple_contract_proof_form, contract_known_keeps_history.unwrap_or_default(), @@ -64,7 +69,7 @@ impl Drive { &platform_version.drive.grove_version, ) }; - let (root_hash, mut proved_key_values) = match result.map_err(Error::GroveDB) { + let (root_hash, mut proved_key_values) = match result.map_err(Error::from) { Ok(ok_result) => ok_result, Err(e) => { return if contract_known_keeps_history.is_none() { @@ -114,7 +119,7 @@ impl Drive { .map(|element| { element .into_item_bytes() - .map_err(Error::GroveDB) + .map_err(Error::from) .and_then(|bytes| { // we don't need to validate the contract locally because it was proved to be in platform // and hence it is valid @@ -124,7 +129,7 @@ impl Drive { false, platform_version, ) - .map_err(Error::Protocol)?, + .map_err(Error::from)?, bytes, )) }) diff --git a/packages/rs-drive/src/verify/document/verify_proof/v0/mod.rs b/packages/rs-drive/src/verify/document/verify_proof/v0/mod.rs index 136f9193a4..d4de2a3002 100644 --- a/packages/rs-drive/src/verify/document/verify_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/document/verify_proof/v0/mod.rs @@ -45,7 +45,7 @@ impl DriveDocumentQuery<'_> { self.document_type, platform_version, ) - .map_err(Error::Protocol) + .map_err(Error::from) }) .collect::, Error>>()?; Ok((root_hash, documents)) diff --git a/packages/rs-drive/src/verify/document/verify_proof_keep_serialized/v0/mod.rs b/packages/rs-drive/src/verify/document/verify_proof_keep_serialized/v0/mod.rs index bf73d5b66e..c58fa3d688 100644 --- a/packages/rs-drive/src/verify/document/verify_proof_keep_serialized/v0/mod.rs +++ b/packages/rs-drive/src/verify/document/verify_proof_keep_serialized/v0/mod.rs @@ -49,7 +49,7 @@ impl DriveDocumentQuery<'_> { let documents = proved_key_values .into_iter() .filter_map(|(_path, _key, element)| element) - .map(|element| element.into_item_bytes().map_err(Error::GroveDB)) + .map(|element| element.into_item_bytes().map_err(Error::from)) .collect::>, Error>>()?; Ok((root_hash, documents)) } diff --git a/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs b/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs index ad8d8f227d..c318a4d132 100644 --- a/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs @@ -63,13 +63,13 @@ impl DriveDocumentQuery<'_> { } let document = maybe_element .map(|element| { - let document_bytes = element.into_item_bytes().map_err(Error::GroveDB)?; + let document_bytes = element.into_item_bytes().map_err(Error::from)?; Document::from_bytes( document_bytes.as_slice(), self.document_type, platform_version, ) - .map_err(Error::Protocol) + .map_err(Error::from) }) .transpose()?; Ok((root_hash, document)) diff --git a/packages/rs-drive/src/verify/group/verify_action_signers/mod.rs b/packages/rs-drive/src/verify/group/verify_action_signers/mod.rs index e708038af4..78d699e61f 100644 --- a/packages/rs-drive/src/verify/group/verify_action_signers/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_action_signers/mod.rs @@ -23,13 +23,13 @@ impl Drive { /// /// # Type Parameters /// - `T`: The output container type that implements `FromIterator`. This is used to collect the verified action signer information - /// as pairs of [`Identifier`] and [`GroupMemberPower`]. + /// as pairs of [`Identifier`] and [`GroupMemberPower`]. /// /// # Arguments /// - `proof`: A byte slice containing the cryptographic proof for the active_action information. /// - `contract_id`: The identifier of the contract whose active_action information is being verified. /// - `start_active_action_contract_position`: An optional starting position for the active_action query, combined with a [`StartAtIncluded`] flag - /// to indicate whether the start position is inclusive. + /// to indicate whether the start position is inclusive. /// - `limit`: An optional limit on the number of active_actions to verify. /// - `verify_subset_of_proof`: A boolean flag indicating whether to verify only a subset of the proof (useful for optimizations). /// - `platform_version`: A reference to the platform version, used to determine the appropriate versioned implementation. diff --git a/packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs b/packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs index 4aad748d7a..abcba58e48 100644 --- a/packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_active_action_infos/mod.rs @@ -24,13 +24,13 @@ impl Drive { /// /// # Type Parameters /// - `T`: The output container type that implements `FromIterator`. This is used to collect the verified action information - /// as pairs of [`Identifier`] and [`GroupAction`]. + /// as pairs of [`Identifier`] and [`GroupAction`]. /// /// # Arguments /// - `proof`: A byte slice containing the cryptographic proof for the active_action information. /// - `contract_id`: The identifier of the contract whose active_action information is being verified. /// - `start_active_action_contract_position`: An optional starting position for the active_action query, combined with a [`StartAtIncluded`] flag - /// to indicate whether the start position is inclusive. + /// to indicate whether the start position is inclusive. /// - `limit`: An optional limit on the number of active_actions to verify. /// - `verify_subset_of_proof`: A boolean flag indicating whether to verify only a subset of the proof (useful for optimizations). /// - `platform_version`: A reference to the platform version, used to determine the appropriate versioned implementation. diff --git a/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs b/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs index 0b2ae2397c..8763a91011 100644 --- a/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs @@ -47,7 +47,7 @@ impl Drive { let element = proved_key_values.remove(0).2; let group = element - .map(|element| element.into_item_bytes().map_err(Error::GroveDB)) + .map(|element| element.into_item_bytes().map_err(Error::from)) .transpose()? .map(|bytes| Group::deserialize_from_bytes(&bytes)) .transpose()?; diff --git a/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs b/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs index 0d20771bc6..d7bfbb8d15 100644 --- a/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/mod.rs @@ -23,13 +23,13 @@ impl Drive { /// /// # Type Parameters /// - `T`: The output container type that implements `FromIterator`. This is used to collect the verified group information - /// as pairs of [`GroupContractPosition`] and [`Group`]. + /// as pairs of [`GroupContractPosition`] and [`Group`]. /// /// # Arguments /// - `proof`: A byte slice containing the cryptographic proof for the group information. /// - `contract_id`: The identifier of the contract whose group information is being verified. /// - `start_group_contract_position`: An optional starting position for the group query, combined with a [`StartAtIncluded`] flag - /// to indicate whether the start position is inclusive. + /// to indicate whether the start position is inclusive. /// - `limit`: An optional limit on the number of groups to verify. /// - `verify_subset_of_proof`: A boolean flag indicating whether to verify only a subset of the proof (useful for optimizations). /// - `platform_version`: A reference to the platform version, used to determine the appropriate versioned implementation. diff --git a/packages/rs-drive/src/verify/identity/verify_full_identities_by_public_key_hashes/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_full_identities_by_public_key_hashes/v0/mod.rs index 43ce89e6d0..32698092cb 100644 --- a/packages/rs-drive/src/verify/identity/verify_full_identities_by_public_key_hashes/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_full_identities_by_public_key_hashes/v0/mod.rs @@ -19,12 +19,12 @@ impl Drive { /// /// - `proof`: A byte slice representing the proof of authentication from the users. /// - `public_key_hashes`: A reference to a slice of 20-byte arrays, each representing - /// a hash of a public key of a user. + /// a hash of a public key of a user. /// /// # Generic Parameters /// /// - `T`: The type of the collection to hold the results, which must be constructible - /// from an iterator of tuples of a 20-byte array and an optional `Identity`. + /// from an iterator of tuples of a 20-byte array and an optional `Identity`. /// /// # Returns /// diff --git a/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs index e9fefdaaf2..8b00014ad9 100644 --- a/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs @@ -66,7 +66,7 @@ impl Drive { if key == identity_id { if let Some(element) = maybe_element { //this is the balance - let signed_balance = element.as_sum_item_value().map_err(Error::GroveDB)?; + let signed_balance = element.as_sum_item_value().map_err(Error::from)?; if signed_balance < 0 { return Err(Error::Proof(ProofError::Overflow( "balance can't be negative", @@ -86,7 +86,7 @@ impl Drive { } } else if path == identity_path && key == vec![IdentityTreeRevision as u8] { if let Some(element) = maybe_element { - let item_bytes = element.into_item_bytes().map_err(Error::GroveDB)?; + let item_bytes = element.into_item_bytes().map_err(Error::from)?; //this is the revision revision = Some(Revision::from_be_bytes(item_bytes.try_into().map_err( |_| { @@ -103,7 +103,7 @@ impl Drive { } } else if path == identity_keys_path { if let Some(element) = maybe_element { - let item_bytes = element.into_item_bytes().map_err(Error::GroveDB)?; + let item_bytes = element.into_item_bytes().map_err(Error::from)?; let key = IdentityPublicKey::deserialize_from_bytes(&item_bytes)?; keys.insert(key.id(), key); } else { diff --git a/packages/rs-drive/src/verify/identity/verify_identity_balance_for_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_balance_for_identity_id/v0/mod.rs index 1648d74ba8..f2064d68c1 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_balance_for_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_balance_for_identity_id/v0/mod.rs @@ -77,7 +77,7 @@ impl Drive { .map(|element| { element .as_sum_item_value() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize("value size is incorrect")) diff --git a/packages/rs-drive/src/verify/identity/verify_identity_balances_for_identity_ids/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_balances_for_identity_ids/v0/mod.rs index b7742ebbb3..64f63c062c 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_balances_for_identity_ids/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_balances_for_identity_ids/v0/mod.rs @@ -76,7 +76,7 @@ impl Drive { Some(element) => { let balance: Credits = element .as_sum_item_value() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/identity/verify_identity_contract_nonce/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_contract_nonce/v0/mod.rs index 5963c503f9..acc2173079 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_contract_nonce/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_contract_nonce/v0/mod.rs @@ -76,7 +76,7 @@ impl Drive { .map(|element| { let bytes: [u8; 8] = element .into_item_bytes() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize("value size is incorrect")) diff --git a/packages/rs-drive/src/verify/identity/verify_identity_id_by_unique_public_key_hash/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_id_by_unique_public_key_hash/v0/mod.rs index cccc1aa0f1..84d5dfc5f2 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_id_by_unique_public_key_hash/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_id_by_unique_public_key_hash/v0/mod.rs @@ -73,7 +73,7 @@ impl Drive { .map(|element| { element .into_item_bytes() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize("value size is incorrect")) diff --git a/packages/rs-drive/src/verify/identity/verify_identity_ids_by_unique_public_key_hashes/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_ids_by_unique_public_key_hashes/v0/mod.rs index 90beab8eaf..0cfdecd83b 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_ids_by_unique_public_key_hashes/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_ids_by_unique_public_key_hashes/v0/mod.rs @@ -74,7 +74,7 @@ impl Drive { Some(element) => { let identity_id = element .into_item_bytes() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs index 9452a0b19d..0314cefc67 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs @@ -82,7 +82,7 @@ impl Drive { let (path, key, maybe_element) = proved_key_value; if path == identity_keys_path { if let Some(element) = maybe_element { - let item_bytes = element.into_item_bytes().map_err(Error::GroveDB)?; + let item_bytes = element.into_item_bytes().map_err(Error::from)?; let key = IdentityPublicKey::deserialize_from_bytes(&item_bytes)?; loaded_public_keys.insert(key.id(), key); } else { @@ -102,12 +102,12 @@ impl Drive { && key == [IdentityRootStructure::IdentityTreeRevision as u8] { if let Some(element) = maybe_element { - let item_bytes = element.into_item_bytes().map_err(Error::GroveDB)?; + let item_bytes = element.into_item_bytes().map_err(Error::from)?; revision = Some(Revision::from_be_bytes( item_bytes.as_slice().try_into().map_err(|_| { - Error::GroveDB(grovedb::Error::WrongElementType( + Error::GroveDB(Box::new(grovedb::Error::WrongElementType( "expecting 8 bytes of data for revision", - )) + ))) })?, )); } else { diff --git a/packages/rs-drive/src/verify/identity/verify_identity_nonce/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_nonce/v0/mod.rs index bbf91a0140..2c65c52a1d 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_nonce/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_nonce/v0/mod.rs @@ -76,7 +76,7 @@ impl Drive { .map(|element| { let bytes: [u8; 8] = element .into_item_bytes() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize("value size is incorrect")) diff --git a/packages/rs-drive/src/verify/mod.rs b/packages/rs-drive/src/verify/mod.rs index 98d19c7bb0..a609a3a69b 100644 --- a/packages/rs-drive/src/verify/mod.rs +++ b/packages/rs-drive/src/verify/mod.rs @@ -1,3 +1,5 @@ +#![allow(clippy::result_large_err)] // Errors intentionally carry rich context in verify paths + // TODO: Revisit after shrinking top-level Error by boxing heavy variants ///DataContract verification methods on proofs pub mod contract; /// Document verification methods on proofs diff --git a/packages/rs-drive/src/verify/single_document/verify_proof/v0/mod.rs b/packages/rs-drive/src/verify/single_document/verify_proof/v0/mod.rs index 480df57eda..18ab16c903 100644 --- a/packages/rs-drive/src/verify/single_document/verify_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/single_document/verify_proof/v0/mod.rs @@ -44,7 +44,7 @@ impl SingleDocumentDriveQuery { let document = serialized .map(|serialized| { Document::from_bytes(serialized.as_slice(), document_type, platform_version) - .map_err(Error::Protocol) + .map_err(Error::from) }) .transpose()?; Ok((root_hash, document)) diff --git a/packages/rs-drive/src/verify/single_document/verify_proof_keep_serialized/v0/mod.rs b/packages/rs-drive/src/verify/single_document/verify_proof_keep_serialized/v0/mod.rs index a5745de619..461278dd7c 100644 --- a/packages/rs-drive/src/verify/single_document/verify_proof_keep_serialized/v0/mod.rs +++ b/packages/rs-drive/src/verify/single_document/verify_proof_keep_serialized/v0/mod.rs @@ -61,7 +61,7 @@ impl SingleDocumentDriveQuery { let element = proved_key_values.remove(0).2; let serialized = element - .map(|element| element.into_item_bytes().map_err(Error::GroveDB)) + .map(|element| element.into_item_bytes().map_err(Error::from)) .transpose()?; Ok((root_hash, serialized)) diff --git a/packages/rs-drive/src/verify/state_transition/state_transition_execution_path_queries/token_transition.rs b/packages/rs-drive/src/verify/state_transition/state_transition_execution_path_queries/token_transition.rs index d1b2470bf6..4962dd75dc 100644 --- a/packages/rs-drive/src/verify/state_transition/state_transition_execution_path_queries/token_transition.rs +++ b/packages/rs-drive/src/verify/state_transition/state_transition_execution_path_queries/token_transition.rs @@ -176,7 +176,7 @@ impl TryTransitionIntoPathQuery for TokenTransition { vec![&group_signer_query, &success_query], &platform_version.drive.grove_version, ) - .map_err(Error::GroveDB) + .map_err(Error::from) } else { // if there is no group info that all we need is this query Ok(action_success_query) diff --git a/packages/rs-drive/src/verify/tokens/verify_token_balances_for_identity_ids/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_balances_for_identity_ids/v0/mod.rs index 3bfa94f7a9..34e6dd7df5 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_balances_for_identity_ids/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_balances_for_identity_ids/v0/mod.rs @@ -48,7 +48,7 @@ impl Drive { Some(element) => { let balance: TokenAmount = element .as_sum_item_value() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs index 4c4a6092e4..b4091eb542 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs @@ -47,7 +47,7 @@ impl Drive { match maybe_element { None => Ok((key.into(), None)), Some(element) => { - let info_bytes = element.as_item_bytes().map_err(Error::GroveDB)?; + let info_bytes = element.as_item_bytes().map_err(Error::from)?; let info = IdentityTokenInfo::deserialize_from_bytes(info_bytes)?; Ok((key.into(), Some(info))) } diff --git a/packages/rs-drive/src/verify/voting/verify_contests_proof/v0/mod.rs b/packages/rs-drive/src/verify/voting/verify_contests_proof/v0/mod.rs index d16f117b97..d68c821c12 100644 --- a/packages/rs-drive/src/verify/voting/verify_contests_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/voting/verify_contests_proof/v0/mod.rs @@ -63,7 +63,7 @@ impl ResolvedVotePollsByDocumentTypeQuery<'_> { key.as_slice(), platform_version, ) - .map_err(Error::Protocol) + .map_err(Error::from) } else if path.len() < result_path_index.unwrap() { Err(Error::Drive(DriveError::CorruptedCodeExecution( "the path length should always be bigger or equal to the result path index", @@ -79,7 +79,7 @@ impl ResolvedVotePollsByDocumentTypeQuery<'_> { inner_path_value_bytes.as_slice(), platform_version, ) - .map_err(Error::Protocol) + .map_err(Error::from) } }) .collect::, Error>>()?; diff --git a/packages/rs-drive/src/verify/voting/verify_specialized_balance/v0/mod.rs b/packages/rs-drive/src/verify/voting/verify_specialized_balance/v0/mod.rs index b28bc3fb4f..c45e461f98 100644 --- a/packages/rs-drive/src/verify/voting/verify_specialized_balance/v0/mod.rs +++ b/packages/rs-drive/src/verify/voting/verify_specialized_balance/v0/mod.rs @@ -77,7 +77,7 @@ impl Drive { .map(|element| { element .as_sum_item_value() - .map_err(Error::GroveDB)? + .map_err(Error::from)? .try_into() .map_err(|_| { Error::Proof(ProofError::IncorrectValueSize("value size is incorrect")) From 9a13ec5008c8f7efd88ff651f83156d69176e641 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Mon, 8 Sep 2025 07:42:21 +0700 Subject: [PATCH 2/5] fix --- packages/rs-drive/src/util/batch/drive_op_batch/document.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/rs-drive/src/util/batch/drive_op_batch/document.rs b/packages/rs-drive/src/util/batch/drive_op_batch/document.rs index 9b31e43c56..4017b1e010 100644 --- a/packages/rs-drive/src/util/batch/drive_op_batch/document.rs +++ b/packages/rs-drive/src/util/batch/drive_op_batch/document.rs @@ -27,6 +27,7 @@ use std::collections::HashMap; /// A wrapper for a document operation #[derive(Clone, Debug)] +#[allow(clippy::large_enum_variant)] pub enum DocumentOperation<'a> { /// An add operation AddOperation { From 77bd55a5eab088721a534a360064dbbdd4c7fedb Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Mon, 8 Sep 2025 07:55:36 +0700 Subject: [PATCH 3/5] fixes --- .../initialization/init_chain/v0/mod.rs | 4 +- .../engine/run_block_proposal/v0/mod.rs | 3 +- .../v0/mod.rs | 6 ++- .../v0/mod.rs | 2 +- .../src/query/system/path_elements/v0/mod.rs | 2 +- .../simple-signer/src/single_key_signer.rs | 46 +++++++++++-------- packages/strategy-tests/src/operations.rs | 4 +- 7 files changed, 39 insertions(+), 28 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs index 4e3bc0eb5b..6995cbf562 100644 --- a/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/initialization/init_chain/v0/mod.rs @@ -5,7 +5,7 @@ use crate::platform_types::platform::Platform; use crate::rpc::core::CoreRPCLike; use dpp::block::block_info::BlockInfo; -use drive::error::Error::GroveDB; +use drive::error; use drive::grovedb::Transaction; use crate::execution::engine::consensus_params_update::consensus_params_update; @@ -131,7 +131,7 @@ where .grove .root_hash(Some(transaction), &platform_version.drive.grove_version) .unwrap() - .map_err(GroveDB)?; + .map_err(error::Error::from)?; // We use first platform version because Tenderdash starts genesis with first versions // by default diff --git a/packages/rs-drive-abci/src/execution/engine/run_block_proposal/v0/mod.rs b/packages/rs-drive-abci/src/execution/engine/run_block_proposal/v0/mod.rs index 6d5823a4fa..e8ee830805 100644 --- a/packages/rs-drive-abci/src/execution/engine/run_block_proposal/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/engine/run_block_proposal/v0/mod.rs @@ -1,7 +1,6 @@ use dpp::block::epoch::Epoch; use dpp::validation::ValidationResult; -use drive::error::Error::GroveDB; use dpp::version::PlatformVersion; use drive::grovedb::Transaction; @@ -383,7 +382,7 @@ where .grove .root_hash(Some(transaction), &platform_version.drive.grove_version) .unwrap() - .map_err(|e| Error::Drive(GroveDB(e)))?; //GroveDb errors are system errors + .map_err(|e| Error::Drive(drive::error::Error::from(e)))?; //GroveDb errors are system errors block_execution_context .block_state_info_mut() diff --git a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs index 52493f0cab..cf255492d2 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_inwards_distribution/add_distribute_block_fees_into_pools_operations/v0/mod.rs @@ -37,7 +37,11 @@ impl Platform { ) .or_else(|e| match e { // Handle epoch change when storage fees are not set yet - error::Error::GroveDB(grovedb::Error::PathKeyNotFound(_)) => Ok(0u64), + error::Error::GroveDB(inner) + if matches!(inner.as_ref(), grovedb::Error::PathKeyNotFound(_)) => + { + Ok(0u64) + } _ => Err(e), })?; diff --git a/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs index 0f3918f52c..c12054ec42 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs @@ -287,7 +287,7 @@ impl Platform { .map(|element| { let contested_document_resource_vote_poll_bytes = element .into_item_bytes() - .map_err(drive::error::Error::GroveDB)?; + .map_err(drive::error::Error::from)?; let vote_poll = VotePoll::deserialize_from_bytes(&contested_document_resource_vote_poll_bytes)?; match vote_poll { diff --git a/packages/rs-drive-abci/src/query/system/path_elements/v0/mod.rs b/packages/rs-drive-abci/src/query/system/path_elements/v0/mod.rs index 0808f3398d..319c098873 100644 --- a/packages/rs-drive-abci/src/query/system/path_elements/v0/mod.rs +++ b/packages/rs-drive-abci/src/query/system/path_elements/v0/mod.rs @@ -57,7 +57,7 @@ impl Platform { .map(|element| { element .serialize(&platform_version.drive.grove_version) - .map_err(|e| Error::Drive(drive::error::Error::GroveDB(e))) + .map_err(|e| Error::Drive(drive::error::Error::from(e))) }) .collect::>, Error>>()?; diff --git a/packages/simple-signer/src/single_key_signer.rs b/packages/simple-signer/src/single_key_signer.rs index 7d1aa581a2..2ac1f54b3d 100644 --- a/packages/simple-signer/src/single_key_signer.rs +++ b/packages/simple-signer/src/single_key_signer.rs @@ -25,7 +25,12 @@ impl SingleKeySigner { } pub fn new_from_slice(private_key_data: &[u8], network: Network) -> Result { - let private_key = PrivateKey::from_slice(private_key_data, network) + if private_key_data.len() != 32 { + return Err("Private key must be 32 bytes".to_string()); + } + let mut arr = [0u8; 32]; + arr.copy_from_slice(private_key_data); + let private_key = PrivateKey::from_byte_array(&arr, network) .map_err(|e| format!("Invalid private key: {}", e))?; Ok(Self { private_key }) } @@ -43,7 +48,9 @@ impl SingleKeySigner { return Err("Private key must be 32 bytes".to_string()); } - let private_key = PrivateKey::from_slice(&key_bytes, network) + let mut arr = [0u8; 32]; + arr.copy_from_slice(&key_bytes); + let private_key = PrivateKey::from_byte_array(&arr, network) .map_err(|e| format!("Invalid private key bytes: {}", e))?; Ok(Self { private_key }) @@ -143,44 +150,45 @@ mod tests { use dashcore::Network; #[test] - fn test_single_key_signer_from_wif() { + fn test_single_key_signer_from_wif() -> Result<(), String> { // Create a valid testnet WIF - let private_key = PrivateKey::from_slice( - &[0x01; 32], // Valid 32-byte private key - Network::Testnet, - ) - .unwrap(); + let private_key = PrivateKey::from_byte_array(&[0x01; 32], Network::Testnet) + .map_err(|e| format!("failed to create test key: {}", e))?; let wif = private_key.to_wif(); - let signer = SingleKeySigner::new(&wif).unwrap(); + let signer = + SingleKeySigner::new(&wif).map_err(|e| format!("signer init failed: {}", e))?; assert!(signer.private_key().to_wif().starts_with('c')); // Testnet WIF assert_eq!(signer.private_key().to_wif(), wif); + Ok(()) } #[test] - fn test_single_key_signer_from_hex() { + fn test_single_key_signer_from_hex() -> Result<(), String> { let hex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - let signer = SingleKeySigner::from_hex(hex, Network::Testnet).unwrap(); + let signer = SingleKeySigner::from_hex(hex, Network::Testnet) + .map_err(|e| format!("signer init failed: {}", e))?; assert_eq!(signer.private_key().inner.secret_bytes().len(), 32); + Ok(()) } #[test] - fn test_single_key_signer_auto_detect() { + fn test_single_key_signer_auto_detect() -> Result<(), String> { // Test hex detection let hex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - let signer = SingleKeySigner::from_string(hex, Network::Testnet).unwrap(); + let signer = SingleKeySigner::from_string(hex, Network::Testnet) + .map_err(|e| format!("signer init failed: {}", e))?; assert_eq!(signer.private_key().inner.secret_bytes().len(), 32); // Test WIF detection - let private_key = PrivateKey::from_slice( - &[0x02; 32], // Valid 32-byte private key - Network::Testnet, - ) - .unwrap(); + let private_key = PrivateKey::from_byte_array(&[0x02; 32], Network::Testnet) + .map_err(|e| format!("failed to create test key: {}", e))?; let wif = private_key.to_wif(); - let signer = SingleKeySigner::from_string(&wif, Network::Testnet).unwrap(); + let signer = SingleKeySigner::from_string(&wif, Network::Testnet) + .map_err(|e| format!("signer init failed: {}", e))?; assert!(signer.private_key().to_wif().starts_with('c')); assert_eq!(signer.private_key().to_wif(), wif); + Ok(()) } } diff --git a/packages/strategy-tests/src/operations.rs b/packages/strategy-tests/src/operations.rs index 51f4e55853..09b5320c0b 100644 --- a/packages/strategy-tests/src/operations.rs +++ b/packages/strategy-tests/src/operations.rs @@ -505,14 +505,14 @@ impl TryFromPlatformVersioned Date: Mon, 8 Sep 2025 12:13:23 +0700 Subject: [PATCH 4/5] fixes --- .../v0/mod.rs | 4 +--- .../v1/mod.rs | 4 +--- .../state_transitions/masternode_vote/mod.rs | 10 ++++------ packages/rs-drive-proof-verifier/src/error.rs | 2 +- packages/rs-drive-proof-verifier/src/proof.rs | 2 +- .../batched_transition/document_transition/mod.rs | 1 + packages/rs-drive/src/state_transition_action/mod.rs | 1 + .../src/util/batch/drive_op_batch/identity.rs | 1 + .../rs-drive/src/util/batch/drive_op_batch/mod.rs | 1 + .../src/util/object_size_info/contract_info.rs | 11 +++++++---- packages/strategy-tests/src/operations.rs | 4 ++-- 11 files changed, 21 insertions(+), 20 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs index 79bef81567..39c17cb46a 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v0/mod.rs @@ -270,9 +270,7 @@ mod tests { assert!(matches!( result, - Err(DriveError::GroveDB( - grovedb::Error::PathParentLayerNotFound(_) - )) + Err(DriveError::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } } diff --git a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v1/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v1/mod.rs index 47db4527b5..680c86ae92 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v1/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations/v1/mod.rs @@ -300,9 +300,7 @@ mod tests { assert!(matches!( result, - Err(DriveError::GroveDB( - grovedb::Error::PathParentLayerNotFound(_) - )) + Err(DriveError::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathParentLayerNotFound(_)) )); } } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs index 2b05033c35..a2f6fe4e57 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs @@ -9785,9 +9785,8 @@ mod tests { assert_matches!( query_validation_result, - Err(Error::Drive(drive::error::Error::GroveDB( - drive::grovedb::Error::CorruptedReferencePathKeyNotFound(_) - ))) + Err(Error::Drive(drive::error::Error::GroveDB(e))) + if matches!(e.as_ref(), drive::grovedb::Error::CorruptedReferencePathKeyNotFound(_)) ) } @@ -10564,9 +10563,8 @@ mod tests { assert_matches!( query_validation_result, - Err(Error::Drive(drive::error::Error::GroveDB( - drive::grovedb::Error::CorruptedReferencePathKeyNotFound(_) - ))) + Err(Error::Drive(drive::error::Error::GroveDB(e))) + if matches!(e.as_ref(), drive::grovedb::Error::CorruptedReferencePathKeyNotFound(_)) ) } diff --git a/packages/rs-drive-proof-verifier/src/error.rs b/packages/rs-drive-proof-verifier/src/error.rs index b684f50bdb..98f1991f07 100644 --- a/packages/rs-drive-proof-verifier/src/error.rs +++ b/packages/rs-drive-proof-verifier/src/error.rs @@ -124,7 +124,7 @@ impl MapGroveDbError for Result { Err(drive::error::Error::GroveDB(grove_err)) => { // If InvalidProof error is returned, extract the path query from it - let maybe_query = match &grove_err { + let maybe_query = match grove_err.as_ref() { GroveError::InvalidProof(path_query, ..) => Some(path_query.clone()), _ => None, }; diff --git a/packages/rs-drive-proof-verifier/src/proof.rs b/packages/rs-drive-proof-verifier/src/proof.rs index 89cf069098..b6ddd7caf0 100644 --- a/packages/rs-drive-proof-verifier/src/proof.rs +++ b/packages/rs-drive-proof-verifier/src/proof.rs @@ -421,7 +421,7 @@ impl FromProof for Identit .map_err(|e| match e { drive::error::Error::GroveDB(e) => { // If InvalidProof error is returned, extract the path query from it - let maybe_query = match &e { + let maybe_query = match e.as_ref() { GroveError::InvalidProof(path_query, ..) => Some(path_query.clone()), _ => None, }; diff --git a/packages/rs-drive/src/state_transition_action/batch/batched_transition/document_transition/mod.rs b/packages/rs-drive/src/state_transition_action/batch/batched_transition/document_transition/mod.rs index 7c40b64531..9ad3ad4d31 100644 --- a/packages/rs-drive/src/state_transition_action/batch/batched_transition/document_transition/mod.rs +++ b/packages/rs-drive/src/state_transition_action/batch/batched_transition/document_transition/mod.rs @@ -30,6 +30,7 @@ use crate::state_transition_action::batch::batched_transition::document_transiti pub const DOCUMENT_TRANSITION_ACTION_VERSION: u32 = 0; /// action +#[allow(clippy::large_enum_variant)] #[derive(Debug, Clone, From)] pub enum DocumentTransitionAction { /// create diff --git a/packages/rs-drive/src/state_transition_action/mod.rs b/packages/rs-drive/src/state_transition_action/mod.rs index 13600ca2cc..9aea971f1d 100644 --- a/packages/rs-drive/src/state_transition_action/mod.rs +++ b/packages/rs-drive/src/state_transition_action/mod.rs @@ -32,6 +32,7 @@ use derive_more::From; use dpp::prelude::UserFeeIncrease; /// ST action +#[allow(clippy::large_enum_variant)] #[derive(Debug, Clone, From)] pub enum StateTransitionAction { /// data contract create diff --git a/packages/rs-drive/src/util/batch/drive_op_batch/identity.rs b/packages/rs-drive/src/util/batch/drive_op_batch/identity.rs index e3ed135a51..99b591b511 100644 --- a/packages/rs-drive/src/util/batch/drive_op_batch/identity.rs +++ b/packages/rs-drive/src/util/batch/drive_op_batch/identity.rs @@ -16,6 +16,7 @@ use grovedb::{EstimatedLayerInformation, TransactionArg}; use std::collections::HashMap; /// Operations on Identities +#[allow(clippy::large_enum_variant)] #[derive(Clone, Debug)] pub enum IdentityOperationType { /// Inserts a new identity to the `Identities` subtree. diff --git a/packages/rs-drive/src/util/batch/drive_op_batch/mod.rs b/packages/rs-drive/src/util/batch/drive_op_batch/mod.rs index 800661cbef..a68e4d79ec 100644 --- a/packages/rs-drive/src/util/batch/drive_op_batch/mod.rs +++ b/packages/rs-drive/src/util/batch/drive_op_batch/mod.rs @@ -67,6 +67,7 @@ pub struct DriveOperationContext { } /// All types of Drive Operations +#[allow(clippy::large_enum_variant)] #[derive(Clone, Debug)] pub enum DriveOperation<'a> { /// A contract operation diff --git a/packages/rs-drive/src/util/object_size_info/contract_info.rs b/packages/rs-drive/src/util/object_size_info/contract_info.rs index 2049b33bb8..fff3c68550 100644 --- a/packages/rs-drive/src/util/object_size_info/contract_info.rs +++ b/packages/rs-drive/src/util/object_size_info/contract_info.rs @@ -24,6 +24,7 @@ use std::sync::Arc; /// Represents various forms of accessing or representing a data contract. /// This enum is used to handle different scenarios in which data contracts /// might be needed, providing a unified interface to access their data. +#[allow(clippy::large_enum_variant)] #[derive(Clone, Debug)] pub enum DataContractInfo<'a> { /// A unique identifier for a data contract. This variant is typically used @@ -43,7 +44,7 @@ pub enum DataContractInfo<'a> { /// An owned version of a data contract. This variant is used when full ownership /// and possibly mutability of the data contract is necessary. - OwnedDataContract(Box), + OwnedDataContract(DataContract), } impl<'a> DataContractInfo<'a> { @@ -89,6 +90,7 @@ impl<'a> DataContractInfo<'a> { /// Contains resolved data contract information, typically used after initial /// fetching or retrieval steps have been completed. This enum simplifies handling /// of data contract states post-retrieval. +#[allow(clippy::large_enum_variant)] #[derive(Clone, Debug, PartialEq)] pub enum DataContractOwnedResolvedInfo { #[cfg(feature = "server")] @@ -99,7 +101,7 @@ pub enum DataContractOwnedResolvedInfo { /// An owned instance of a data contract. This variant provides full control /// and mutability over the data contract, suitable for scenarios requiring /// modifications or extended operations on the data contract. - OwnedDataContract(Box), + OwnedDataContract(DataContract), } impl DataContractOwnedResolvedInfo { @@ -135,7 +137,7 @@ impl DataContractOwnedResolvedInfo { DataContractOwnedResolvedInfo::DataContractFetchInfo(fetch_info) => { fetch_info.contract.clone() } - DataContractOwnedResolvedInfo::OwnedDataContract(owned) => *owned, + DataContractOwnedResolvedInfo::OwnedDataContract(owned) => owned, } } } @@ -143,6 +145,7 @@ impl DataContractOwnedResolvedInfo { /// Contains resolved data contract information, typically used after initial /// fetching or retrieval steps have been completed. This enum simplifies handling /// of data contract states post-retrieval. +#[allow(clippy::large_enum_variant)] #[derive(Clone, Debug, PartialEq)] pub enum DataContractResolvedInfo<'a> { #[cfg(feature = "server")] @@ -160,7 +163,7 @@ pub enum DataContractResolvedInfo<'a> { /// An owned instance of a data contract. This variant provides full control /// and mutability over the data contract, suitable for scenarios requiring /// modifications or extended operations on the data contract. - OwnedDataContract(Box), + OwnedDataContract(DataContract), } impl<'a> From<&'a DataContractOwnedResolvedInfo> for DataContractResolvedInfo<'a> { diff --git a/packages/strategy-tests/src/operations.rs b/packages/strategy-tests/src/operations.rs index 09b5320c0b..51f4e55853 100644 --- a/packages/strategy-tests/src/operations.rs +++ b/packages/strategy-tests/src/operations.rs @@ -505,14 +505,14 @@ impl TryFromPlatformVersioned Date: Mon, 8 Sep 2025 12:47:26 +0700 Subject: [PATCH 5/5] slight clean up --- .../fetch_oldest_withdrawal_documents_by_status/v0/mod.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs b/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs index 30680e6f00..1ecf53df25 100644 --- a/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/withdrawals/document/fetch_oldest_withdrawal_documents_by_status/v0/mod.rs @@ -443,10 +443,6 @@ mod tests { .as_u64() .expect("status should be a number") as u8; - if status == withdrawals_contract::WithdrawalStatus::QUEUED as u8 { - // intentionally no-op: counts only used for debugging - } - let mut properties: Value = doc_value.clone().into(); // Handle outputScript separately (it's base64 encoded) @@ -494,10 +490,6 @@ mod tests { ); } - // println!( - // "Total documents: printed only when debugging", - // ); - // Test the new function that fetches all documents grouped by status let documents_by_status = drive .fetch_oldest_withdrawal_documents_v0(Some(&transaction), platform_version)