39 lines
1.2 KiB
Rust
39 lines
1.2 KiB
Rust
use netpod::log::*;
|
|
use netpod::ScyllaConfig;
|
|
use scylla::client::execution_profile::ExecutionProfileBuilder;
|
|
use scylla::client::session::Session;
|
|
use scylla::client::session_builder::SessionBuilder;
|
|
use scylla::errors::NewSessionError;
|
|
use scylla::statement::Consistency;
|
|
use std::sync::Arc;
|
|
|
|
autoerr::create_error_v1!(
|
|
name(Error, "ScyllaSessionCreate"),
|
|
enum variants {
|
|
ScyllaSessionNew(#[from] NewSessionError),
|
|
ScyllaUseKeyspace(#[from] scylla::errors::UseKeyspaceError),
|
|
},
|
|
);
|
|
|
|
pub async fn create_scy_session(scyconf: &ScyllaConfig) -> Result<Arc<Session>, Error> {
|
|
let scy = create_scy_session_no_ks(scyconf).await?;
|
|
scy.use_keyspace(&scyconf.keyspace, true).await?;
|
|
let ret = Arc::new(scy);
|
|
Ok(ret)
|
|
}
|
|
|
|
pub async fn create_scy_session_no_ks(scyconf: &ScyllaConfig) -> Result<Session, Error> {
|
|
info!("creating scylla connection");
|
|
let scy = SessionBuilder::new()
|
|
.known_nodes(&scyconf.hosts)
|
|
.default_execution_profile_handle(
|
|
ExecutionProfileBuilder::default()
|
|
.consistency(Consistency::Quorum)
|
|
.build()
|
|
.into_handle(),
|
|
)
|
|
.build()
|
|
.await?;
|
|
Ok(scy)
|
|
}
|