spanner-rs 0.3.0

Cloud Spanner Rust Client
Documentation
use crate::{Error, ResultSet, Session, Statement, ToSpanner, Transaction, TransactionSelector};
use async_trait::async_trait;
use dyn_clone::DynClone;

#[async_trait]
pub(crate) trait Connection
where
    Self: DynClone + Send,
{
    async fn create_session(&mut self) -> Result<Session, Error>;
    async fn delete_session(&mut self, session: Session) -> Result<(), Error>;
    async fn commit(&mut self, session: &Session, transaction: Transaction) -> Result<(), Error>;
    async fn rollback(&mut self, session: &Session, transaction: Transaction) -> Result<(), Error>;
    async fn execute_sql(
        &mut self,
        session: &Session,
        selector: &TransactionSelector,
        statement: &str,
        parameters: &[(&str, &(dyn ToSpanner + Sync))],
        seqno: Option<i64>,
    ) -> Result<ResultSet, Error>;

    async fn execute_batch_dml(
        &mut self,
        session: &Session,
        selector: &TransactionSelector,
        statements: &[&Statement],
        seqno: i64,
    ) -> Result<Vec<ResultSet>, Error>;
}

dyn_clone::clone_trait_object!(Connection);

pub(crate) mod grpc;