ydb/client_scheme/
client.rs1use crate::client::TimeoutSettings;
2use crate::client_scheme::list_types::SchemeEntry;
3use crate::grpc_connection_manager::GrpcConnectionManager;
4use crate::grpc_wrapper::raw_scheme_client::client::{
5 RawMakeDirectoryRequest, RawRemoveDirectoryRequest,
6};
7use crate::grpc_wrapper::raw_scheme_client::list_directory_types::RawListDirectoryRequest;
8use crate::{grpc_wrapper, YdbResult};
9
10#[derive(Clone)]
11pub struct SchemeClient {
12 timeouts: TimeoutSettings,
13 connection_manager: GrpcConnectionManager,
14}
15
16impl SchemeClient {
17 pub(crate) fn new(
18 timeouts: TimeoutSettings,
19 connection_manager: GrpcConnectionManager,
20 ) -> Self {
21 Self {
22 timeouts,
23 connection_manager,
24 }
25 }
26
27 pub async fn make_directory(&mut self, path: String) -> YdbResult<()> {
28 let req = RawMakeDirectoryRequest {
29 operation_params: self.timeouts.operation_params(),
30 path,
31 };
32 let mut service = self.connection().await?;
33 service.make_directory(req).await?;
34 Ok(())
35 }
36
37 pub async fn list_directory(&mut self, path: String) -> YdbResult<Vec<SchemeEntry>> {
38 let req = RawListDirectoryRequest {
39 operation_params: self.timeouts.operation_params(),
40 path,
41 };
42
43 let mut service = self.connection().await?;
44 let res = service.list_directory(req).await?;
45
46 Ok(res.children.into_iter().collect())
47 }
48
49 pub async fn remove_directory(&mut self, path: String) -> YdbResult<()> {
50 let req = RawRemoveDirectoryRequest {
51 operation_params: self.timeouts.operation_params(),
52 path,
53 };
54 let mut service = self.connection().await?;
55 service.remove_directory(req).await?;
56 Ok(())
57 }
58
59 async fn connection(
60 &self,
61 ) -> YdbResult<grpc_wrapper::raw_scheme_client::client::RawSchemeClient> {
62 self.connection_manager
63 .get_auth_service(grpc_wrapper::raw_scheme_client::client::RawSchemeClient::new)
64 .await
65 }
66}