1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
use super::{QueryFlags, QueryParams, QueryValues};
use crate::consistency::Consistency;
use crate::types::{CBytes, CInt, CLong};
#[derive(Debug, Default)]
pub struct QueryParamsBuilder {
consistency: Consistency,
flags: Option<QueryFlags>,
values: Option<QueryValues>,
with_names: bool,
page_size: Option<CInt>,
paging_state: Option<CBytes>,
serial_consistency: Option<Consistency>,
timestamp: Option<CLong>,
keyspace: Option<String>,
now_in_seconds: Option<CInt>,
}
impl QueryParamsBuilder {
pub fn new() -> QueryParamsBuilder {
Default::default()
}
#[must_use]
pub fn with_consistency(mut self, consistency: Consistency) -> Self {
self.consistency = consistency;
self
}
#[must_use]
pub fn with_flags(mut self, flags: QueryFlags) -> Self {
self.flags = Some(flags);
self
}
#[must_use]
pub fn with_values(mut self, values: QueryValues) -> Self {
self.with_names = values.has_names();
self.values = Some(values);
self.flags = self.flags.or_else(|| {
let mut flags = QueryFlags::VALUE;
if self.with_names {
flags.insert(QueryFlags::WITH_NAMES_FOR_VALUES);
}
Some(flags)
});
self
}
#[must_use]
pub fn with_names(mut self, with_names: bool) -> Self {
self.with_names = with_names;
self
}
#[must_use]
pub fn with_page_size(mut self, size: CInt) -> Self {
self.page_size = Some(size);
self.flags = self.flags.or(Some(QueryFlags::PAGE_SIZE));
self
}
#[must_use]
pub fn with_paging_state(mut self, state: CBytes) -> Self {
self.paging_state = Some(state);
self.flags = self.flags.or(Some(QueryFlags::WITH_PAGING_STATE));
self
}
#[must_use]
pub fn with_serial_consistency(mut self, serial_consistency: Consistency) -> Self {
self.serial_consistency = Some(serial_consistency);
self
}
#[must_use]
pub fn with_timestamp(mut self, timestamp: CLong) -> Self {
self.timestamp = Some(timestamp);
self
}
#[must_use]
pub fn with_keyspace(mut self, keyspace: String) -> Self {
self.keyspace = Some(keyspace);
self
}
#[must_use]
pub fn with_now_in_seconds(mut self, now_in_seconds: CInt) -> Self {
self.now_in_seconds = Some(now_in_seconds);
self
}
#[must_use]
pub fn build(self) -> QueryParams {
QueryParams {
consistency: self.consistency,
values: self.values,
with_names: self.with_names,
page_size: self.page_size,
paging_state: self.paging_state,
serial_consistency: self.serial_consistency,
timestamp: self.timestamp,
keyspace: self.keyspace,
now_in_seconds: self.now_in_seconds,
}
}
}