use crate::segment::json_path::JsonPath;
use crate::segment::types::Filter;
use crate::edge::requests::facet::FacetRequest;
#[derive(Clone, Debug)]
pub struct FacetRequestBuilder {
key: JsonPath,
limit: usize,
filter: Option<Filter>,
exact: bool,
}
impl FacetRequestBuilder {
pub fn new(key: JsonPath) -> Self {
let FacetRequest {
key,
limit,
filter,
exact,
} = FacetRequest::new(key);
Self {
key,
limit,
filter,
exact,
}
}
pub fn limit(mut self, limit: usize) -> Self {
self.limit = limit;
self
}
pub fn filter(mut self, filter: Filter) -> Self {
self.filter = Some(filter);
self
}
pub fn exact(mut self, exact: bool) -> Self {
self.exact = exact;
self
}
pub fn build(self) -> FacetRequest {
let Self {
key,
limit,
filter,
exact,
} = self;
FacetRequest {
key,
limit,
filter,
exact,
}
}
}