use pancake_db_idl::ddl::*;
use pancake_db_idl::dml::*;
use pancake_db_idl::service::pancake_db_client::PancakeDbClient;
use tonic::codegen::StdError;
use tonic::transport::Channel;
use crate::errors::ClientResult;
#[cfg(feature = "read")]
mod read;
#[derive(Clone, Debug)]
pub struct Client {
pub grpc: PancakeDbClient<Channel>,
}
impl Client {
pub async fn connect<D>(dst: D) -> ClientResult<Self> where
D: std::convert::TryInto<tonic::transport::Endpoint>,
D::Error: Into<StdError>,
{
let grpc = PancakeDbClient::connect(dst).await?;
Ok(Client { grpc })
}
pub async fn alter_table(&mut self, req: AlterTableRequest) -> ClientResult<AlterTableResponse> {
let resp = self.grpc.alter_table(req).await?.into_inner();
Ok(resp)
}
pub async fn create_table(&mut self, req: CreateTableRequest) -> ClientResult<CreateTableResponse> {
let resp = self.grpc.create_table(req).await?.into_inner();
Ok(resp)
}
pub async fn drop_table(&mut self, req: DropTableRequest) -> ClientResult<DropTableResponse> {
let resp = self.grpc.drop_table(req).await?.into_inner();
Ok(resp)
}
pub async fn get_schema(&mut self, req: GetSchemaRequest) -> ClientResult<GetSchemaResponse> {
let resp = self.grpc.get_schema(req).await?.into_inner();
Ok(resp)
}
pub async fn delete_from_segment(&mut self, req: DeleteFromSegmentRequest) -> ClientResult<DeleteFromSegmentResponse> {
let resp = self.grpc.delete_from_segment(req).await?.into_inner();
Ok(resp)
}
pub async fn list_tables(&mut self, req: ListTablesRequest) -> ClientResult<ListTablesResponse> {
let resp = self.grpc.list_tables(req).await?.into_inner();
Ok(resp)
}
pub async fn list_segments(&mut self, req: ListSegmentsRequest) -> ClientResult<ListSegmentsResponse> {
let resp = self.grpc.list_segments(req).await?.into_inner();
Ok(resp)
}
pub async fn read_segment_deletions(&mut self, req: ReadSegmentDeletionsRequest) -> ClientResult<ReadSegmentDeletionsResponse> {
let resp = self.grpc.read_segment_deletions(req).await?.into_inner();
Ok(resp)
}
pub async fn write_to_partition(&mut self, req: WriteToPartitionRequest) -> ClientResult<WriteToPartitionResponse> {
let resp = self.grpc.write_to_partition(req).await?.into_inner();
Ok(resp)
}
}