unitycatalog_client/codegen/schemas/
client.rs1#![allow(unused_imports)]
3use crate::Result;
4use olai_http::CloudClient;
5use unitycatalog_common::models::schemas::v1::*;
6use url::Url;
7#[derive(Clone)]
9pub struct SchemaServiceClient {
10 pub(crate) client: CloudClient,
11 pub(crate) base_url: Url,
12}
13impl SchemaServiceClient {
14 pub fn new(client: CloudClient, mut base_url: Url) -> Self {
16 if !base_url.path().ends_with('/') {
17 base_url.set_path(&format!("{}/", base_url.path()));
18 }
19 Self { client, base_url }
20 }
21 pub async fn list_schemas(&self, request: &ListSchemasRequest) -> Result<ListSchemasResponse> {
26 let mut url = self.base_url.join("schemas")?;
27 url.query_pairs_mut()
28 .append_pair("catalog_name", &request.catalog_name);
29 if let Some(ref value) = request.max_results {
30 url.query_pairs_mut()
31 .append_pair("max_results", &value.to_string());
32 }
33 if let Some(ref value) = request.page_token {
34 url.query_pairs_mut()
35 .append_pair("page_token", &value.to_string());
36 }
37 if let Some(ref value) = request.include_browse {
38 url.query_pairs_mut()
39 .append_pair("include_browse", &value.to_string());
40 }
41 let response = self.client.get(url).send().await?;
42 if !response.status().is_success() {
43 return Err(crate::error::parse_error_response(response).await);
44 }
45 let result = response.bytes().await?;
46 Ok(serde_json::from_slice(&result)?)
47 }
48 pub async fn create_schema(&self, request: &CreateSchemaRequest) -> Result<Schema> {
51 let url = self.base_url.join("schemas")?;
52 let response = self.client.post(url).json(request).send().await?;
53 if !response.status().is_success() {
54 return Err(crate::error::parse_error_response(response).await);
55 }
56 let result = response.bytes().await?;
57 Ok(serde_json::from_slice(&result)?)
58 }
59 pub async fn get_schema(&self, request: &GetSchemaRequest) -> Result<Schema> {
63 let formatted_path = format!("schemas/{}", request.full_name);
64 let url = self.base_url.join(&formatted_path)?;
65 let response = self.client.get(url).send().await?;
66 if !response.status().is_success() {
67 return Err(crate::error::parse_error_response(response).await);
68 }
69 let result = response.bytes().await?;
70 Ok(serde_json::from_slice(&result)?)
71 }
72 pub async fn update_schema(&self, request: &UpdateSchemaRequest) -> Result<Schema> {
77 let formatted_path = format!("schemas/{}", request.full_name);
78 let url = self.base_url.join(&formatted_path)?;
79 let response = self.client.patch(url).json(request).send().await?;
80 if !response.status().is_success() {
81 return Err(crate::error::parse_error_response(response).await);
82 }
83 let result = response.bytes().await?;
84 Ok(serde_json::from_slice(&result)?)
85 }
86 pub async fn delete_schema(&self, request: &DeleteSchemaRequest) -> Result<()> {
89 let formatted_path = format!("schemas/{}", request.full_name);
90 let mut url = self.base_url.join(&formatted_path)?;
91 if let Some(ref value) = request.force {
92 url.query_pairs_mut()
93 .append_pair("force", &value.to_string());
94 }
95 let response = self.client.delete(url).send().await?;
96 if !response.status().is_success() {
97 return Err(crate::error::parse_error_response(response).await);
98 }
99 Ok(())
100 }
101}