mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-11-04 09:56:28 +00:00 
			
		
		
		
	Add default deserialize value
This commit is contained in:
		@@ -523,7 +523,12 @@ async fn granular_filterable_attributes() {
 | 
			
		||||
        index.update_settings(json!({ "filterableAttributes": [
 | 
			
		||||
            { "attributePatterns": ["name"], "features": { "facetSearch": true, "filter": {"equality": true, "comparison": false} } },
 | 
			
		||||
            { "attributePatterns": ["age"], "features": { "facetSearch": false, "filter": {"equality": true, "comparison": true} } },
 | 
			
		||||
            { "attributePatterns": ["id"] }
 | 
			
		||||
            { "attributePatterns": ["id"] },
 | 
			
		||||
            { "attributePatterns": ["default-filterable-features-null"], "features": { "facetSearch": true } },
 | 
			
		||||
            { "attributePatterns": ["default-filterable-features-equality"], "features": { "facetSearch": true, "filter": {"comparison": true} } },
 | 
			
		||||
            { "attributePatterns": ["default-filterable-features-comparison"], "features": { "facetSearch": true, "filter": {"equality": true} } },
 | 
			
		||||
            { "attributePatterns": ["default-filterable-features-empty"], "features": { "facetSearch": true, "filter": {} } },
 | 
			
		||||
            { "attributePatterns": ["default-facet-search"], "features": { "filter": {"equality": true, "comparison": true} } },
 | 
			
		||||
        ] })).await;
 | 
			
		||||
    assert_eq!(code, 202);
 | 
			
		||||
    index.wait_task(response.uid()).await.succeeded();
 | 
			
		||||
@@ -567,6 +572,66 @@ async fn granular_filterable_attributes() {
 | 
			
		||||
            "comparison": false
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "attributePatterns": [
 | 
			
		||||
          "default-filterable-features-null"
 | 
			
		||||
        ],
 | 
			
		||||
        "features": {
 | 
			
		||||
          "facetSearch": true,
 | 
			
		||||
          "filter": {
 | 
			
		||||
            "equality": true,
 | 
			
		||||
            "comparison": false
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "attributePatterns": [
 | 
			
		||||
          "default-filterable-features-equality"
 | 
			
		||||
        ],
 | 
			
		||||
        "features": {
 | 
			
		||||
          "facetSearch": true,
 | 
			
		||||
          "filter": {
 | 
			
		||||
            "equality": true,
 | 
			
		||||
            "comparison": true
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "attributePatterns": [
 | 
			
		||||
          "default-filterable-features-comparison"
 | 
			
		||||
        ],
 | 
			
		||||
        "features": {
 | 
			
		||||
          "facetSearch": true,
 | 
			
		||||
          "filter": {
 | 
			
		||||
            "equality": true,
 | 
			
		||||
            "comparison": false
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "attributePatterns": [
 | 
			
		||||
          "default-filterable-features-empty"
 | 
			
		||||
        ],
 | 
			
		||||
        "features": {
 | 
			
		||||
          "facetSearch": true,
 | 
			
		||||
          "filter": {
 | 
			
		||||
            "equality": true,
 | 
			
		||||
            "comparison": false
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "attributePatterns": [
 | 
			
		||||
          "default-facet-search"
 | 
			
		||||
        ],
 | 
			
		||||
        "features": {
 | 
			
		||||
          "facetSearch": false,
 | 
			
		||||
          "filter": {
 | 
			
		||||
            "equality": true,
 | 
			
		||||
            "comparison": true
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
    "###);
 | 
			
		||||
 
 | 
			
		||||
@@ -71,7 +71,11 @@ impl FilterableAttributesPatterns {
 | 
			
		||||
#[deserr(rename_all = camelCase, deny_unknown_fields)]
 | 
			
		||||
#[derive(Default)]
 | 
			
		||||
pub struct FilterableAttributesFeatures {
 | 
			
		||||
    #[serde(default)]
 | 
			
		||||
    #[deserr(default)]
 | 
			
		||||
    facet_search: bool,
 | 
			
		||||
    #[serde(default)]
 | 
			
		||||
    #[deserr(default)]
 | 
			
		||||
    filter: FilterFeatures,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -144,11 +148,21 @@ impl<E: DeserializeError> Deserr<E> for FilterableAttributesRule {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Copy, Debug, Deserr, ToSchema)]
 | 
			
		||||
#[serde(deny_unknown_fields, rename_all = "camelCase")]
 | 
			
		||||
#[deserr(rename_all = camelCase, deny_unknown_fields)]
 | 
			
		||||
pub struct FilterFeatures {
 | 
			
		||||
    #[serde(default = "default_true")]
 | 
			
		||||
    #[deserr(default = true)]
 | 
			
		||||
    equality: bool,
 | 
			
		||||
    #[serde(default)]
 | 
			
		||||
    #[deserr(default)]
 | 
			
		||||
    comparison: bool,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn default_true() -> bool {
 | 
			
		||||
    true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl FilterFeatures {
 | 
			
		||||
    /// Get the allowed operators for the filter.
 | 
			
		||||
    pub fn allowed_operators(&self) -> Vec<String> {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user