cdrs_temp/query/
query_params_builder.rs1use super::{QueryFlags, QueryParams, QueryValues};
2use crate::consistency::Consistency;
3use crate::types::CBytes;
4
5#[derive(Debug, Default)]
6pub struct QueryParamsBuilder {
7 consistency: Consistency,
8 flags: Option<Vec<QueryFlags>>,
9 values: Option<QueryValues>,
10 with_names: Option<bool>,
11 page_size: Option<i32>,
12 paging_state: Option<CBytes>,
13 serial_consistency: Option<Consistency>,
14 timestamp: Option<i64>,
15}
16
17impl QueryParamsBuilder {
18 pub fn new() -> QueryParamsBuilder {
21 Default::default()
22 }
23
24 pub fn consistency(mut self, consistency: Consistency) -> Self {
26 self.consistency = consistency;
27
28 self
29 }
30
31 builder_opt_field!(flags, Vec<QueryFlags>);
33
34 pub fn values(mut self, values: QueryValues) -> Self {
37 let with_names = values.with_names();
38 self.with_names = Some(with_names);
39 self.values = Some(values);
40 self.flags = self.flags.or(Some(vec![])).map(|mut flags| {
41 flags.push(QueryFlags::Value);
42 if with_names {
43 flags.push(QueryFlags::WithNamesForValues);
44 }
45 flags
46 });
47
48 self
49 }
50
51 builder_opt_field!(with_names, bool);
53
54 pub fn page_size(mut self, size: i32) -> Self {
57 self.page_size = Some(size);
58 self.flags = self.flags.or(Some(vec![])).map(|mut flags| {
59 flags.push(QueryFlags::PageSize);
60 flags
61 });
62
63 self
64 }
65
66 pub fn paging_state(mut self, state: CBytes) -> Self {
69 self.paging_state = Some(state);
70 self.flags = self.flags.or(Some(vec![])).map(|mut flags| {
71 flags.push(QueryFlags::WithPagingState);
72 flags
73 });
74
75 self
76 }
77
78 builder_opt_field!(serial_consistency, Consistency);
80
81 builder_opt_field!(timestamp, i64);
83
84 pub fn finalize(self) -> QueryParams {
86 QueryParams {
87 consistency: self.consistency,
88 flags: self.flags.unwrap_or(vec![]),
89 values: self.values,
90 with_names: self.with_names,
91 page_size: self.page_size,
92 paging_state: self.paging_state,
93 serial_consistency: self.serial_consistency,
94 timestamp: self.timestamp,
95 }
96 }
97}