Skip to main content

unitycatalog_client/codegen/providers/
builders.rs

1// @generated — do not edit by hand.
2#![allow(unused_mut)]
3#![allow(unused_imports)]
4#[cfg(not(target_arch = "wasm32"))]
5type BoxFut<'a, T> = ::futures::future::BoxFuture<'a, T>;
6#[cfg(target_arch = "wasm32")]
7type BoxFut<'a, T> = ::futures::future::LocalBoxFuture<'a, T>;
8#[cfg(not(target_arch = "wasm32"))]
9type BoxStr<'a, T> = ::futures::stream::BoxStream<'a, T>;
10#[cfg(target_arch = "wasm32")]
11type BoxStr<'a, T> = ::futures::stream::LocalBoxStream<'a, T>;
12use super::super::stream_paginated;
13use super::client::*;
14use crate::Result;
15use futures::{StreamExt, TryStreamExt};
16use std::future::IntoFuture;
17use unitycatalog_common::models::providers::v1::*;
18/// Builder for listing providers
19pub struct ListProvidersBuilder {
20    client: ProviderServiceClient,
21    request: ListProvidersRequest,
22}
23impl ListProvidersBuilder {
24    /// Create a new builder instance.
25    /// Obtain via the corresponding method on `ProviderServiceClient`.
26    pub(crate) fn new(client: ProviderServiceClient) -> Self {
27        let request = ListProvidersRequest {
28            ..Default::default()
29        };
30        Self { client, request }
31    }
32    /// The maximum number of results per page that should be returned.
33    pub fn with_max_results(mut self, max_results: impl Into<Option<i32>>) -> Self {
34        self.request.max_results = max_results.into();
35        self
36    }
37    /// Opaque pagination token to go to next page based on previous query.
38    pub fn with_page_token(mut self, page_token: impl Into<Option<String>>) -> Self {
39        self.request.page_token = page_token.into();
40        self
41    }
42    /// Convert paginated request into stream of results
43    pub fn into_stream(self) -> BoxStr<'static, Result<Provider>> {
44        let remaining = self.request.max_results;
45        let stream = stream_paginated(
46            (self, remaining),
47            move |(mut builder, mut remaining), page_token| async move {
48                builder.request.page_token = page_token;
49                let res = builder.client.list_providers(&builder.request).await?;
50                if let Some(ref mut rem) = remaining {
51                    *rem -= res.providers.len() as i32;
52                }
53                let next_page_token = if remaining.is_some_and(|r| r <= 0) {
54                    None
55                } else {
56                    res.next_page_token.clone()
57                };
58                Ok((res, (builder, remaining), next_page_token))
59            },
60        )
61        .map_ok(|resp| futures::stream::iter(resp.providers.into_iter().map(Ok)))
62        .try_flatten();
63        #[cfg(not(target_arch = "wasm32"))]
64        let stream = stream.boxed();
65        #[cfg(target_arch = "wasm32")]
66        let stream = stream.boxed_local();
67        stream
68    }
69}
70impl IntoFuture for ListProvidersBuilder {
71    type Output = Result<ListProvidersResponse>;
72    type IntoFuture = BoxFut<'static, Self::Output>;
73    fn into_future(self) -> Self::IntoFuture {
74        let client = self.client;
75        let request = self.request;
76        Box::pin(async move { client.list_providers(&request).await })
77    }
78}
79/// Builder for creating a provider
80pub struct CreateProviderBuilder {
81    client: ProviderServiceClient,
82    request: CreateProviderRequest,
83}
84impl CreateProviderBuilder {
85    /// Create a new builder instance.
86    /// Obtain via the corresponding method on `ProviderServiceClient`.
87    pub(crate) fn new(
88        client: ProviderServiceClient,
89        name: impl Into<String>,
90        authentication_type: ProviderAuthenticationType,
91    ) -> Self {
92        let request = CreateProviderRequest {
93            name: name.into(),
94            authentication_type: buffa::EnumValue::Known(authentication_type),
95            ..Default::default()
96        };
97        Self { client, request }
98    }
99    /// Username of the provider owner.
100    pub fn with_owner(mut self, owner: impl Into<Option<String>>) -> Self {
101        self.request.owner = owner.into();
102        self
103    }
104    /// Description about the provider.
105    pub fn with_comment(mut self, comment: impl Into<Option<String>>) -> Self {
106        self.request.comment = comment.into();
107        self
108    }
109    /** The recipient profile (credential file contents) used to connect to the
110    sharing server, required for TOKEN authentication.*/
111    pub fn with_recipient_profile_str(
112        mut self,
113        recipient_profile_str: impl Into<Option<String>>,
114    ) -> Self {
115        self.request.recipient_profile_str = recipient_profile_str.into();
116        self
117    }
118    /// Provider properties as map of string key-value pairs.
119    pub fn with_properties<I, K, V>(mut self, properties: I) -> Self
120    where
121        I: IntoIterator<Item = (K, V)>,
122        K: Into<String>,
123        V: Into<String>,
124    {
125        self.request.properties = properties
126            .into_iter()
127            .map(|(k, v)| (k.into(), v.into()))
128            .collect();
129        self
130    }
131}
132impl IntoFuture for CreateProviderBuilder {
133    type Output = Result<Provider>;
134    type IntoFuture = BoxFut<'static, Self::Output>;
135    fn into_future(self) -> Self::IntoFuture {
136        let client = self.client;
137        let request = self.request;
138        Box::pin(async move { client.create_provider(&request).await })
139    }
140}
141/// Builder for getting a provider
142pub struct GetProviderBuilder {
143    client: ProviderServiceClient,
144    request: GetProviderRequest,
145}
146impl GetProviderBuilder {
147    /// Create a new builder instance.
148    /// Obtain via the corresponding method on `ProviderServiceClient`.
149    pub(crate) fn new(client: ProviderServiceClient, name: impl Into<String>) -> Self {
150        let request = GetProviderRequest {
151            name: name.into(),
152            ..Default::default()
153        };
154        Self { client, request }
155    }
156}
157impl IntoFuture for GetProviderBuilder {
158    type Output = Result<Provider>;
159    type IntoFuture = BoxFut<'static, Self::Output>;
160    fn into_future(self) -> Self::IntoFuture {
161        let client = self.client;
162        let request = self.request;
163        Box::pin(async move { client.get_provider(&request).await })
164    }
165}
166/// Builder for updating a provider
167pub struct UpdateProviderBuilder {
168    client: ProviderServiceClient,
169    request: UpdateProviderRequest,
170}
171impl UpdateProviderBuilder {
172    /// Create a new builder instance.
173    /// Obtain via the corresponding method on `ProviderServiceClient`.
174    pub(crate) fn new(client: ProviderServiceClient, name: impl Into<String>) -> Self {
175        let request = UpdateProviderRequest {
176            name: name.into(),
177            ..Default::default()
178        };
179        Self { client, request }
180    }
181    /// New name for the provider.
182    pub fn with_new_name(mut self, new_name: impl Into<Option<String>>) -> Self {
183        self.request.new_name = new_name.into();
184        self
185    }
186    /// Username of the provider owner.
187    pub fn with_owner(mut self, owner: impl Into<Option<String>>) -> Self {
188        self.request.owner = owner.into();
189        self
190    }
191    /// Description about the provider.
192    pub fn with_comment(mut self, comment: impl Into<Option<String>>) -> Self {
193        self.request.comment = comment.into();
194        self
195    }
196    /** The recipient profile (credential file contents) used to connect to the
197    sharing server.*/
198    pub fn with_recipient_profile_str(
199        mut self,
200        recipient_profile_str: impl Into<Option<String>>,
201    ) -> Self {
202        self.request.recipient_profile_str = recipient_profile_str.into();
203        self
204    }
205    /** Provider properties as map of string key-value pairs.
206
207    When provided in update request, the specified properties will override the existing properties.
208    To add and remove properties, one would need to perform a read-modify-write.*/
209    pub fn with_properties<I, K, V>(mut self, properties: I) -> Self
210    where
211        I: IntoIterator<Item = (K, V)>,
212        K: Into<String>,
213        V: Into<String>,
214    {
215        self.request.properties = properties
216            .into_iter()
217            .map(|(k, v)| (k.into(), v.into()))
218            .collect();
219        self
220    }
221}
222impl IntoFuture for UpdateProviderBuilder {
223    type Output = Result<Provider>;
224    type IntoFuture = BoxFut<'static, Self::Output>;
225    fn into_future(self) -> Self::IntoFuture {
226        let client = self.client;
227        let request = self.request;
228        Box::pin(async move { client.update_provider(&request).await })
229    }
230}
231/// Builder for deleting a provider
232pub struct DeleteProviderBuilder {
233    client: ProviderServiceClient,
234    request: DeleteProviderRequest,
235}
236impl DeleteProviderBuilder {
237    /// Create a new builder instance.
238    /// Obtain via the corresponding method on `ProviderServiceClient`.
239    pub(crate) fn new(client: ProviderServiceClient, name: impl Into<String>) -> Self {
240        let request = DeleteProviderRequest {
241            name: name.into(),
242            ..Default::default()
243        };
244        Self { client, request }
245    }
246}
247impl IntoFuture for DeleteProviderBuilder {
248    type Output = Result<()>;
249    type IntoFuture = BoxFut<'static, Self::Output>;
250    fn into_future(self) -> Self::IntoFuture {
251        let client = self.client;
252        let request = self.request;
253        Box::pin(async move { client.delete_provider(&request).await })
254    }
255}