qdrant_edge/shard/
facet.rs1use schemars::JsonSchema;
2use crate::segment::json_path::JsonPath;
3use crate::segment::types::Filter;
4use serde::{Deserialize, Serialize};
5use validator::Validate;
6
7#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, JsonSchema, Validate)]
10#[serde(rename_all = "snake_case")]
11pub struct FacetRequestInternal {
12 pub key: JsonPath,
14 #[serde(default = "FacetRequestInternal::default_limit")]
16 #[validate(range(min = 1))]
17 pub limit: usize,
18 #[validate(nested)]
20 pub filter: Option<Filter>,
21 #[serde(default = "FacetRequestInternal::default_exact")]
25 pub exact: bool,
26}
27
28impl FacetRequestInternal {
29 pub const DEFAULT_LIMIT: usize = 10;
30
31 pub const fn default_limit() -> usize {
32 Self::DEFAULT_LIMIT
33 }
34
35 pub const fn default_exact() -> bool {
36 false
37 }
38}