clickhouse_client/query/
mod.rs1mod comp;
4mod crud;
5mod data;
6mod exec;
7mod fmt;
8mod result;
9mod sql;
10mod stmt;
11
12#[cfg(test)]
13mod tests;
14
15pub use comp::*;
16pub use crud::*;
17pub use data::*;
18pub use exec::*;
19pub use fmt::*;
20pub use result::*;
21pub use sql::*;
22pub use stmt::*;
23
24use crate::value::{ChValue, Value};
25
26#[derive(Default, Debug)]
30pub struct Query {
31 pub statement: String,
33 pub data: Option<QueryData>,
35 pub db: Option<String>,
37 pub credentials: Option<(String, String)>,
39 pub format: Option<Format>,
41 pub compress_request: Option<Compression>,
43 pub compress_response: Option<Compression>,
45}
46
47impl Query {
48 pub fn new(stmt: &str) -> Self {
50 Query {
51 statement: stmt.to_string(),
52 data: None,
53 db: None,
54 credentials: None,
55 format: None,
56 compress_request: None,
57 compress_response: None,
58 }
59 }
60
61 pub fn statement(mut self, stmt: &str) -> Self {
63 self.statement = stmt.to_string();
64 self
65 }
66
67 pub fn data(mut self, table: QueryData) -> Self {
69 self.data = Some(table);
70 self
71 }
72
73 pub fn bind_val(mut self, value: impl ChValue) -> Self {
77 self.statement = self.statement.bind_val(value);
78 self
79 }
80
81 pub fn bind_str(mut self, value: &str) -> Self {
87 self.statement = self.statement.bind_str(value);
88 self
89 }
90
91 pub fn bind_val_list(mut self, values: Vec<Value>) -> Self {
93 self.statement = self.statement.bind_val_list(values);
94 self
95 }
96
97 pub fn bind_str_list(mut self, values: Vec<&str>) -> Self {
99 self.statement = self.statement.bind_str_list(values);
100 self
101 }
102
103 pub fn db(mut self, db: &str) -> Self {
105 self.db = Some(db.to_string());
106 self
107 }
108
109 pub fn credentials(mut self, username: &str, password: &str) -> Self {
111 self.credentials = Some((username.to_string(), password.to_string()));
112 self
113 }
114
115 pub fn format(mut self, format: Format) -> Self {
119 self.format = Some(format);
120 self
121 }
122
123 pub fn compress_request(mut self, compression: Compression) -> Self {
127 self.compress_request = Some(compression);
128 self
129 }
130
131 pub fn compress_response(mut self, compression: Compression) -> Self {
133 self.compress_response = Some(compression);
134 self
135 }
136}