casdoor_rust_sdk/
adapter.rs1use serde::{Deserialize, Serialize};
16
17use crate::client::{get_owner, Client, Response};
18use crate::error::Result;
19
20#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
23#[serde(rename_all = "camelCase", default)]
24pub struct Adapter {
25 pub owner: String,
26 pub name: String,
27 pub created_time: String,
28
29 pub table: String,
30 pub use_same_db: bool,
31 pub r#type: String,
32 pub database_type: String,
33 pub host: String,
34 pub port: i32,
35 pub user: String,
36 pub password: String,
37 pub database: String,
38}
39
40impl Client {
41 pub async fn get_adapters(&self) -> Result<Vec<Adapter>> {
43 self.get_list("get-adapters", &[("owner", &self.config.organization_name)])
44 .await
45 }
46
47 pub async fn get_pagination_adapters(
50 &self,
51 p: i32,
52 page_size: i32,
53 query: &[(&str, &str)],
54 ) -> Result<(Vec<Adapter>, i32)> {
55 self.get_pagination(
56 "get-adapters",
57 &self.config.organization_name,
58 p,
59 page_size,
60 query,
61 )
62 .await
63 }
64
65 pub async fn get_adapter(&self, name: &str) -> Result<Option<Adapter>> {
67 self.get_object("get-adapter", &[("id", &self.get_id(name))])
68 .await
69 }
70
71 pub async fn add_adapter(&self, adapter: &Adapter) -> Result<bool> {
73 Ok(self.modify_adapter("add-adapter", adapter, &[]).await?.1)
74 }
75
76 pub async fn update_adapter(&self, adapter: &Adapter) -> Result<bool> {
78 Ok(self.modify_adapter("update-adapter", adapter, &[]).await?.1)
79 }
80
81 pub async fn delete_adapter(&self, adapter: &Adapter) -> Result<bool> {
83 Ok(self.modify_adapter("delete-adapter", adapter, &[]).await?.1)
84 }
85
86 async fn modify_adapter(
87 &self,
88 action: &str,
89 adapter: &Adapter,
90 columns: &[&str],
91 ) -> Result<(Response, bool)> {
92 let mut adapter = adapter.clone();
93 adapter.owner = get_owner(&adapter.owner, &self.config.organization_name);
94
95 let id = format!("{}/{}", adapter.owner, adapter.name);
96 self.modify_object(action, &id, &adapter, columns).await
97 }
98}