Skip to main content

qdrant_edge/edge/builders/
count_request.rs

1//! Fluent builder for [`CountRequest`].
2//!
3//! Builder fields mirror [`CountRequest`] explicitly so adding a field
4//! to the target struct forces a compile error here.
5
6use crate::segment::types::Filter;
7
8use crate::edge::requests::count::CountRequest;
9
10/// Fluent builder for [`CountRequest`].
11///
12/// Every field is optional and falls back to the [`CountRequest::new`] defaults.
13#[derive(Clone, Debug)]
14pub struct CountRequestBuilder {
15    filter: Option<Filter>,
16    exact: bool,
17}
18
19impl CountRequestBuilder {
20    pub fn new() -> Self {
21        let CountRequest { filter, exact } = CountRequest::new();
22        Self { filter, exact }
23    }
24
25    pub fn filter(mut self, filter: Filter) -> Self {
26        self.filter = Some(filter);
27        self
28    }
29
30    pub fn exact(mut self, exact: bool) -> Self {
31        self.exact = exact;
32        self
33    }
34
35    pub fn build(self) -> CountRequest {
36        // Exhaustively destructure Self and construct CountRequest:
37        // adding a field to either type forces a compile error here.
38        let Self { filter, exact } = self;
39        CountRequest { filter, exact }
40    }
41}
42
43impl Default for CountRequestBuilder {
44    fn default() -> Self {
45        Self::new()
46    }
47}