unitycatalog_client/codegen/providers/
builders.rs1#![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::*;
12pub struct ListProvidersBuilder {
14 client: ProviderServiceClient,
15 request: ListProvidersRequest,
16}
17impl ListProvidersBuilder {
18 pub(crate) fn new(client: ProviderServiceClient) -> Self {
21 let request = ListProvidersRequest {
22 ..Default::default()
23 };
24 Self { client, request }
25 }
26 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 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 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}
69pub struct CreateProviderBuilder {
71 client: ProviderServiceClient,
72 request: CreateProviderRequest,
73}
74impl CreateProviderBuilder {
75 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 pub fn with_owner(mut self, owner: impl Into<Option<String>>) -> Self {
91 self.request.owner = owner.into();
92 self
93 }
94 pub fn with_comment(mut self, comment: impl Into<Option<String>>) -> Self {
96 self.request.comment = comment.into();
97 self
98 }
99 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 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}
131pub struct GetProviderBuilder {
133 client: ProviderServiceClient,
134 request: GetProviderRequest,
135}
136impl GetProviderBuilder {
137 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}
156pub struct UpdateProviderBuilder {
158 client: ProviderServiceClient,
159 request: UpdateProviderRequest,
160}
161impl UpdateProviderBuilder {
162 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 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 pub fn with_owner(mut self, owner: impl Into<Option<String>>) -> Self {
178 self.request.owner = owner.into();
179 self
180 }
181 pub fn with_comment(mut self, comment: impl Into<Option<String>>) -> Self {
183 self.request.comment = comment.into();
184 self
185 }
186 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 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}
221pub struct DeleteProviderBuilder {
223 client: ProviderServiceClient,
224 request: DeleteProviderRequest,
225}
226impl DeleteProviderBuilder {
227 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}