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