#[async_trait::async_trait]
pub trait Spanner: std::fmt::Debug + Send + Sync {
async fn create_session(
&self,
req: crate::model::CreateSessionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Session>>;
async fn batch_create_sessions(
&self,
req: crate::model::BatchCreateSessionsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::BatchCreateSessionsResponse>>;
async fn get_session(
&self,
req: crate::model::GetSessionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Session>>;
async fn list_sessions(
&self,
req: crate::model::ListSessionsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ListSessionsResponse>>;
async fn delete_session(
&self,
req: crate::model::DeleteSessionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<()>>;
async fn execute_sql(
&self,
req: crate::model::ExecuteSqlRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ResultSet>>;
async fn execute_batch_dml(
&self,
req: crate::model::ExecuteBatchDmlRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ExecuteBatchDmlResponse>>;
async fn read(
&self,
req: crate::model::ReadRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ResultSet>>;
async fn begin_transaction(
&self,
req: crate::model::BeginTransactionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Transaction>>;
async fn commit(
&self,
req: crate::model::CommitRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::CommitResponse>>;
async fn rollback(
&self,
req: crate::model::RollbackRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<()>>;
async fn partition_query(
&self,
req: crate::model::PartitionQueryRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::PartitionResponse>>;
async fn partition_read(
&self,
req: crate::model::PartitionReadRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::PartitionResponse>>;
}
#[async_trait::async_trait]
impl<T: super::Spanner> Spanner for T {
async fn create_session(
&self,
req: crate::model::CreateSessionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Session>> {
T::create_session(self, req, options).await
}
async fn batch_create_sessions(
&self,
req: crate::model::BatchCreateSessionsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::BatchCreateSessionsResponse>> {
T::batch_create_sessions(self, req, options).await
}
async fn get_session(
&self,
req: crate::model::GetSessionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Session>> {
T::get_session(self, req, options).await
}
async fn list_sessions(
&self,
req: crate::model::ListSessionsRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ListSessionsResponse>> {
T::list_sessions(self, req, options).await
}
async fn delete_session(
&self,
req: crate::model::DeleteSessionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<()>> {
T::delete_session(self, req, options).await
}
async fn execute_sql(
&self,
req: crate::model::ExecuteSqlRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ResultSet>> {
T::execute_sql(self, req, options).await
}
async fn execute_batch_dml(
&self,
req: crate::model::ExecuteBatchDmlRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ExecuteBatchDmlResponse>> {
T::execute_batch_dml(self, req, options).await
}
async fn read(
&self,
req: crate::model::ReadRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::ResultSet>> {
T::read(self, req, options).await
}
async fn begin_transaction(
&self,
req: crate::model::BeginTransactionRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::Transaction>> {
T::begin_transaction(self, req, options).await
}
async fn commit(
&self,
req: crate::model::CommitRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::CommitResponse>> {
T::commit(self, req, options).await
}
async fn rollback(
&self,
req: crate::model::RollbackRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<()>> {
T::rollback(self, req, options).await
}
async fn partition_query(
&self,
req: crate::model::PartitionQueryRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::PartitionResponse>> {
T::partition_query(self, req, options).await
}
async fn partition_read(
&self,
req: crate::model::PartitionReadRequest,
options: crate::RequestOptions,
) -> crate::Result<crate::Response<crate::model::PartitionResponse>> {
T::partition_read(self, req, options).await
}
}