scylla/statement/
unprepared.rs1use super::{PageSize, StatementConfig};
2use crate::client::execution_profile::ExecutionProfileHandle;
3use crate::frame::types::{Consistency, SerialConsistency};
4use crate::observability::history::HistoryListener;
5use crate::policies::retry::RetryPolicy;
6use std::sync::Arc;
7use std::time::Duration;
8
9#[derive(Clone)]
13pub struct Statement {
14 pub(crate) config: StatementConfig,
15
16 pub contents: String,
17 page_size: PageSize,
18}
19
20impl Statement {
21 pub fn new(query_text: impl Into<String>) -> Self {
23 Self {
24 contents: query_text.into(),
25 page_size: PageSize::default(),
26 config: Default::default(),
27 }
28 }
29
30 pub fn with_page_size(mut self, page_size: i32) -> Self {
34 self.set_page_size(page_size);
35 self
36 }
37
38 pub fn set_page_size(&mut self, page_size: i32) {
42 self.page_size = page_size
43 .try_into()
44 .unwrap_or_else(|err| panic!("Query::set_page_size: {err}"));
45 }
46
47 pub(crate) fn get_validated_page_size(&self) -> PageSize {
49 self.page_size
50 }
51
52 pub fn get_page_size(&self) -> i32 {
54 self.page_size.inner()
55 }
56
57 pub fn set_consistency(&mut self, c: Consistency) {
59 self.config.consistency = Some(c);
60 }
61
62 pub fn get_consistency(&self) -> Option<Consistency> {
65 self.config.consistency
66 }
67
68 pub fn set_serial_consistency(&mut self, sc: Option<SerialConsistency>) {
71 self.config.serial_consistency = Some(sc);
72 }
73
74 pub fn get_serial_consistency(&self) -> Option<SerialConsistency> {
77 self.config.serial_consistency.flatten()
78 }
79
80 pub fn set_is_idempotent(&mut self, is_idempotent: bool) {
86 self.config.is_idempotent = is_idempotent;
87 }
88
89 pub fn get_is_idempotent(&self) -> bool {
91 self.config.is_idempotent
92 }
93
94 pub fn set_tracing(&mut self, should_trace: bool) {
98 self.config.tracing = should_trace;
99 }
100
101 pub fn get_tracing(&self) -> bool {
103 self.config.tracing
104 }
105
106 pub fn set_timestamp(&mut self, timestamp: Option<i64>) {
111 self.config.timestamp = timestamp
112 }
113
114 pub fn get_timestamp(&self) -> Option<i64> {
116 self.config.timestamp
117 }
118
119 pub fn set_request_timeout(&mut self, timeout: Option<Duration>) {
124 self.config.request_timeout = timeout
125 }
126
127 pub fn get_request_timeout(&self) -> Option<Duration> {
129 self.config.request_timeout
130 }
131
132 #[inline]
134 pub fn set_retry_policy(&mut self, retry_policy: Option<Arc<dyn RetryPolicy>>) {
135 self.config.retry_policy = retry_policy;
136 }
137
138 #[inline]
140 pub fn get_retry_policy(&self) -> Option<&Arc<dyn RetryPolicy>> {
141 self.config.retry_policy.as_ref()
142 }
143
144 pub fn set_history_listener(&mut self, history_listener: Arc<dyn HistoryListener>) {
146 self.config.history_listener = Some(history_listener);
147 }
148
149 pub fn remove_history_listener(&mut self) -> Option<Arc<dyn HistoryListener>> {
151 self.config.history_listener.take()
152 }
153
154 pub fn set_execution_profile_handle(&mut self, profile_handle: Option<ExecutionProfileHandle>) {
157 self.config.execution_profile_handle = profile_handle;
158 }
159
160 pub fn get_execution_profile_handle(&self) -> Option<&ExecutionProfileHandle> {
162 self.config.execution_profile_handle.as_ref()
163 }
164}
165
166impl From<String> for Statement {
167 fn from(s: String) -> Statement {
168 Statement::new(s)
169 }
170}
171
172impl<'a> From<&'a str> for Statement {
173 fn from(s: &'a str) -> Statement {
174 Statement::new(s.to_owned())
175 }
176}