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: authentication_type as i32,
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 { name: name.into() };
141        Self { client, request }
142    }
143}
144impl IntoFuture for GetProviderBuilder {
145    type Output = Result<Provider>;
146    type IntoFuture = BoxFut<'static, Self::Output>;
147    fn into_future(self) -> Self::IntoFuture {
148        let client = self.client;
149        let request = self.request;
150        Box::pin(async move { client.get_provider(&request).await })
151    }
152}
153/// Builder for updating a provider
154pub struct UpdateProviderBuilder {
155    client: ProviderServiceClient,
156    request: UpdateProviderRequest,
157}
158impl UpdateProviderBuilder {
159    /// Create a new builder instance.
160    /// Obtain via the corresponding method on `ProviderServiceClient`.
161    pub(crate) fn new(client: ProviderServiceClient, name: impl Into<String>) -> Self {
162        let request = UpdateProviderRequest {
163            name: name.into(),
164            ..Default::default()
165        };
166        Self { client, request }
167    }
168    /// New name for the provider.
169    pub fn with_new_name(mut self, new_name: impl Into<Option<String>>) -> Self {
170        self.request.new_name = new_name.into();
171        self
172    }
173    /// Username of the provider owner.
174    pub fn with_owner(mut self, owner: impl Into<Option<String>>) -> Self {
175        self.request.owner = owner.into();
176        self
177    }
178    /// Description about the provider.
179    pub fn with_comment(mut self, comment: impl Into<Option<String>>) -> Self {
180        self.request.comment = comment.into();
181        self
182    }
183    /** The recipient profile (credential file contents) used to connect to the
184    sharing server.*/
185    pub fn with_recipient_profile_str(
186        mut self,
187        recipient_profile_str: impl Into<Option<String>>,
188    ) -> Self {
189        self.request.recipient_profile_str = recipient_profile_str.into();
190        self
191    }
192    /** Provider properties as map of string key-value pairs.
193
194    When provided in update request, the specified properties will override the existing properties.
195    To add and remove properties, one would need to perform a read-modify-write.*/
196    pub fn with_properties<I, K, V>(mut self, properties: I) -> Self
197    where
198        I: IntoIterator<Item = (K, V)>,
199        K: Into<String>,
200        V: Into<String>,
201    {
202        self.request.properties = properties
203            .into_iter()
204            .map(|(k, v)| (k.into(), v.into()))
205            .collect();
206        self
207    }
208}
209impl IntoFuture for UpdateProviderBuilder {
210    type Output = Result<Provider>;
211    type IntoFuture = BoxFut<'static, Self::Output>;
212    fn into_future(self) -> Self::IntoFuture {
213        let client = self.client;
214        let request = self.request;
215        Box::pin(async move { client.update_provider(&request).await })
216    }
217}
218/// Builder for deleting a provider
219pub struct DeleteProviderBuilder {
220    client: ProviderServiceClient,
221    request: DeleteProviderRequest,
222}
223impl DeleteProviderBuilder {
224    /// Create a new builder instance.
225    /// Obtain via the corresponding method on `ProviderServiceClient`.
226    pub(crate) fn new(client: ProviderServiceClient, name: impl Into<String>) -> Self {
227        let request = DeleteProviderRequest { name: name.into() };
228        Self { client, request }
229    }
230}
231impl IntoFuture for DeleteProviderBuilder {
232    type Output = Result<()>;
233    type IntoFuture = BoxFut<'static, Self::Output>;
234    fn into_future(self) -> Self::IntoFuture {
235        let client = self.client;
236        let request = self.request;
237        Box::pin(async move { client.delete_provider(&request).await })
238    }
239}