1use std::sync::Arc;
2
3use base::BaseClient;
4
5pub(crate) mod base;
6pub mod entity;
7pub mod kv;
8pub mod lease;
9pub mod mounts;
10pub mod namespace;
11pub mod operator;
12pub mod policy;
13pub mod psql;
14pub mod status;
15pub mod userpass;
16pub(crate) mod utils;
17
18pub struct Client {
19 pub entity: crate::entity::Client,
20 pub policy: crate::policy::Client,
21 pub operator: crate::operator::Client,
22 pub status: crate::status::Client,
23 pub mount: crate::mounts::Client,
24 pub kv: crate::kv::Client,
25 pub psql: crate::psql::Client,
26 pub userpass: crate::userpass::Client,
27 pub lease: crate::lease::Client,
28 pub namespace: crate::namespace::Client,
29 base: Arc<BaseClient>,
30}
31
32impl Client {
33 pub fn new(api_url: impl ToString) -> Self {
34 let base_client = Arc::new(BaseClient::new(api_url));
35
36 let entity = crate::entity::Client::new(Arc::clone(&base_client));
37 let policy = crate::policy::Client::new(Arc::clone(&base_client));
38 let operator = crate::operator::Client::new(Arc::clone(&base_client));
39 let status = crate::status::Client::new(Arc::clone(&base_client));
40 let mounts = crate::mounts::Client::new(Arc::clone(&base_client));
41 let kv = crate::kv::Client::new(Arc::clone(&base_client));
42 let psql = crate::psql::Client::new(Arc::clone(&base_client));
43 let userpass = crate::userpass::Client::new(Arc::clone(&base_client));
44 let lease = crate::lease::Client::new(Arc::clone(&base_client));
45 let namespace = crate::namespace::Client::new(Arc::clone(&base_client));
46
47 Self {
48 entity,
49 policy,
50 operator,
51 status,
52 mount: mounts,
53 kv,
54 psql,
55 userpass,
56 lease,
57 namespace,
58 base: base_client,
59 }
60 }
61
62 pub async fn set_token(&self, token: Option<String>) {
63 self.base.set_token(token).await
64 }
65
66 pub async fn set_namespace(&self, namespace: Option<String>) {
67 self.base.set_namespace(namespace).await
68 }
69}