mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-06-13 23:47:47 +00:00
62 lines
1.6 KiB
Rust
62 lines
1.6 KiB
Rust
use std::num::NonZeroUsize;
|
|
use std::collections::HashMap;
|
|
|
|
use serde::{Serialize, Deserialize, de::Deserializer};
|
|
|
|
// Any value that is present is considered Some value, including null.
|
|
fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error>
|
|
where T: Deserialize<'de>,
|
|
D: Deserializer<'de>
|
|
{
|
|
Deserialize::deserialize(deserializer).map(Some)
|
|
}
|
|
|
|
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct Settings {
|
|
#[serde(
|
|
default,
|
|
deserialize_with = "deserialize_some",
|
|
skip_serializing_if = "Option::is_none",
|
|
)]
|
|
pub displayed_attributes: Option<Option<Vec<String>>>,
|
|
|
|
#[serde(
|
|
default,
|
|
deserialize_with = "deserialize_some",
|
|
skip_serializing_if = "Option::is_none",
|
|
)]
|
|
pub searchable_attributes: Option<Option<Vec<String>>>,
|
|
|
|
#[serde(default)]
|
|
pub faceted_attributes: Option<Option<HashMap<String, String>>>,
|
|
|
|
#[serde(
|
|
default,
|
|
deserialize_with = "deserialize_some",
|
|
skip_serializing_if = "Option::is_none",
|
|
)]
|
|
pub criteria: Option<Option<Vec<String>>>,
|
|
}
|
|
|
|
impl Settings {
|
|
pub fn cleared() -> Self {
|
|
Self {
|
|
displayed_attributes: Some(None),
|
|
searchable_attributes: Some(None),
|
|
faceted_attributes: Some(None),
|
|
criteria: Some(None),
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct Facets {
|
|
pub level_group_size: Option<NonZeroUsize>,
|
|
pub min_level_size: Option<NonZeroUsize>,
|
|
}
|