use cassandra_protocol::query::QueryParams;
use cassandra_protocol::types::value::Value;
use derivative::Derivative;
use std::sync::Arc;
use crate::cluster::Murmur3Token;
use crate::retry::RetryPolicy;
use crate::speculative_execution::SpeculativeExecutionPolicy;
#[derive(Default, Clone, Derivative)]
#[derivative(Debug)]
pub struct StatementParams {
pub query_params: QueryParams,
pub is_idempotent: bool,
pub keyspace: Option<String>,
pub token: Option<Murmur3Token>,
pub routing_key: Option<Vec<Value>>,
pub tracing: bool,
pub warnings: bool,
#[derivative(Debug = "ignore")]
pub speculative_execution_policy: Option<Arc<dyn SpeculativeExecutionPolicy + Send + Sync>>,
#[derivative(Debug = "ignore")]
pub retry_policy: Option<Arc<dyn RetryPolicy + Send + Sync>>,
pub beta_protocol: bool,
}