use schemars::JsonSchema;
use crate::segment::json_path::JsonPath;
use crate::segment::types::Filter;
use serde::{Deserialize, Serialize};
use validator::Validate;
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, JsonSchema, Validate)]
#[serde(rename_all = "snake_case")]
pub struct FacetRequestInternal {
pub key: JsonPath,
#[serde(default = "FacetRequestInternal::default_limit")]
#[validate(range(min = 1))]
pub limit: usize,
#[validate(nested)]
pub filter: Option<Filter>,
#[serde(default = "FacetRequestInternal::default_exact")]
pub exact: bool,
}
impl FacetRequestInternal {
pub const DEFAULT_LIMIT: usize = 10;
pub const fn default_limit() -> usize {
Self::DEFAULT_LIMIT
}
pub const fn default_exact() -> bool {
false
}
}