diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 8710052e86..aeda3a86c7 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -98,6 +98,7 @@ all_features = [ "identity-value-conversion", "identity-json-conversion", "identity-cbor-conversion", + "index-serde-conversion", "state-transition-serde-conversion", "state-transition-value-conversion", "state-transition-json-conversion", @@ -158,6 +159,7 @@ all_features_without_client = [ "identity-value-conversion", "identity-json-conversion", "identity-cbor-conversion", + "index-serde-conversion", "state-transition-serde-conversion", "state-transition-value-conversion", "state-transition-json-conversion", @@ -224,6 +226,7 @@ identity-cbor-conversion = [ "cbor", "platform-value-cbor", ] +index-serde-conversion = [] state-transition-serde-conversion = ["data-contract-serde-conversion"] state-transition-value-conversion = [ "platform-value", diff --git a/packages/rs-dpp/src/data_contract/document_type/index/mod.rs b/packages/rs-dpp/src/data_contract/document_type/index/mod.rs index 9213e18cbb..cfdcf0f6c4 100644 --- a/packages/rs-dpp/src/data_contract/document_type/index/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/index/mod.rs @@ -21,6 +21,7 @@ pub mod random_index; // Indices documentation: https://dashplatform.readme.io/docs/reference-data-contracts#document-indices #[derive(Clone, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "index-serde-conversion", derive(Serialize, Deserialize))] pub struct Index { pub name: String, pub properties: Vec, @@ -54,6 +55,7 @@ impl Index { } #[derive(Clone, Debug, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "index-serde-conversion", derive(Serialize, Deserialize))] pub struct IndexProperty { pub name: String, pub ascending: bool, diff --git a/packages/rs-drive/src/error/query.rs b/packages/rs-drive/src/error/query.rs index f472519ef0..8b1db734ce 100644 --- a/packages/rs-drive/src/error/query.rs +++ b/packages/rs-drive/src/error/query.rs @@ -96,7 +96,7 @@ pub enum QuerySyntaxError { /// Where clause on non indexed property error #[error("where clause on non indexed property error: {0}")] - WhereClauseOnNonIndexedProperty(&'static str), + WhereClauseOnNonIndexedProperty(String), /// Query is too far from index error #[error("query is too far from index: {0}")] QueryTooFarFromIndex(&'static str), diff --git a/packages/rs-drive/src/query/mod.rs b/packages/rs-drive/src/query/mod.rs index 5db17e742c..2f6db41c17 100644 --- a/packages/rs-drive/src/query/mod.rs +++ b/packages/rs-drive/src/query/mod.rs @@ -1135,9 +1135,10 @@ impl<'a> DriveQuery<'a> { platform_version, )? .ok_or(Error::Query( - QuerySyntaxError::WhereClauseOnNonIndexedProperty( - "query must be for valid indexes", - ), + QuerySyntaxError::WhereClauseOnNonIndexedProperty(format!( + "query must be for valid indexes, valid indexes are: {:?}", + self.document_type.indices() + )), ))?; if difference > defaults::MAX_INDEX_DIFFERENCE { return Err(Error::Query(QuerySyntaxError::QueryTooFarFromIndex( diff --git a/packages/rs-drive/src/query/test_index.rs b/packages/rs-drive/src/query/test_index.rs index d0b4b12cb6..a721f2f8a2 100644 --- a/packages/rs-drive/src/query/test_index.rs +++ b/packages/rs-drive/src/query/test_index.rs @@ -164,7 +164,7 @@ mod tests { .find_best_index(platform_version) .expect_err("expected to not find index"); assert!( - matches!(error, Error::Query(QuerySyntaxError::WhereClauseOnNonIndexedProperty(message)) if message == "query must be for valid indexes") + matches!(error, Error::Query(QuerySyntaxError::WhereClauseOnNonIndexedProperty(message)) if message.contains("query must be for valid indexes")) ) } } diff --git a/packages/rs-sdk/src/platform/transition.rs b/packages/rs-sdk/src/platform/transition.rs index 985c730b05..7dd65ce9de 100644 --- a/packages/rs-sdk/src/platform/transition.rs +++ b/packages/rs-sdk/src/platform/transition.rs @@ -4,14 +4,14 @@ pub(crate) mod broadcast_identity; pub mod broadcast_request; pub(crate) mod context; pub mod purchase_document; -mod put_contract; +pub mod put_contract; pub mod put_document; pub mod put_identity; pub mod put_settings; pub mod top_up_identity; pub mod transfer_document; mod txid; -mod update_price_of_document; +pub mod update_price_of_document; pub mod withdraw_from_identity; pub use context::*;