ydb 0.12.0

Crate contains generated low-level grpc code from YDB API protobuf, used as base for ydb crate
Documentation
use crate::client::TimeoutSettings;
use crate::client_scheme::list_types::SchemeEntry;
use crate::grpc_connection_manager::GrpcConnectionManager;
use crate::grpc_wrapper::raw_scheme_client::client::{
    RawMakeDirectoryRequest, RawRemoveDirectoryRequest,
};
use crate::grpc_wrapper::raw_scheme_client::list_directory_types::RawListDirectoryRequest;
use crate::{grpc_wrapper, YdbResult};

#[derive(Clone)]
pub struct SchemeClient {
    timeouts: TimeoutSettings,
    connection_manager: GrpcConnectionManager,
}

impl SchemeClient {
    pub(crate) fn new(
        timeouts: TimeoutSettings,
        connection_manager: GrpcConnectionManager,
    ) -> Self {
        Self {
            timeouts,
            connection_manager,
        }
    }

    pub async fn make_directory(&mut self, path: String) -> YdbResult<()> {
        let req = RawMakeDirectoryRequest {
            operation_params: self.timeouts.operation_params(),
            path,
        };
        let mut service = self.connection().await?;
        service.make_directory(req).await?;
        Ok(())
    }

    pub async fn list_directory(&mut self, path: String) -> YdbResult<Vec<SchemeEntry>> {
        let req = RawListDirectoryRequest {
            operation_params: self.timeouts.operation_params(),
            path,
        };

        let mut service = self.connection().await?;
        let res = service.list_directory(req).await?;

        Ok(res.children.into_iter().collect())
    }

    pub async fn remove_directory(&mut self, path: String) -> YdbResult<()> {
        let req = RawRemoveDirectoryRequest {
            operation_params: self.timeouts.operation_params(),
            path,
        };
        let mut service = self.connection().await?;
        service.remove_directory(req).await?;
        Ok(())
    }

    async fn connection(
        &self,
    ) -> YdbResult<grpc_wrapper::raw_scheme_client::client::RawSchemeClient> {
        self.connection_manager
            .get_auth_service(grpc_wrapper::raw_scheme_client::client::RawSchemeClient::new)
            .await
    }
}