Skip to main content

couchbase_core/mgmtx/
options.rs

1/*
2 *
3 *  * Copyright (c) 2025 Couchbase, Inc.
4 *  *
5 *  * Licensed under the Apache License, Version 2.0 (the "License");
6 *  * you may not use this file except in compliance with the License.
7 *  * You may obtain a copy of the License at
8 *  *
9 *  *    http://www.apache.org/licenses/LICENSE-2.0
10 *  *
11 *  * Unless required by applicable law or agreed to in writing, software
12 *  * distributed under the License is distributed on an "AS IS" BASIS,
13 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  * See the License for the specific language governing permissions and
15 *  * limitations under the License.
16 *
17 */
18
19use crate::httpx::client::Client;
20use crate::httpx::request::OnBehalfOfInfo;
21use crate::mgmtx::bucket_settings::BucketSettings;
22use crate::mgmtx::node_target::NodeTarget;
23use crate::mgmtx::user::{Group, User};
24use std::sync::Arc;
25
26#[derive(Debug, Clone, Eq, PartialEq)]
27#[non_exhaustive]
28pub struct GetCollectionManifestOptions<'a> {
29    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
30    pub bucket_name: &'a str,
31}
32
33#[derive(Debug, Clone, Eq, PartialEq)]
34#[non_exhaustive]
35pub struct CreateScopeOptions<'a> {
36    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
37    pub bucket_name: &'a str,
38    pub scope_name: &'a str,
39}
40
41#[derive(Debug, Clone, Eq, PartialEq)]
42#[non_exhaustive]
43pub struct DeleteScopeOptions<'a> {
44    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
45    pub bucket_name: &'a str,
46    pub scope_name: &'a str,
47}
48
49#[derive(Debug, Clone, Eq, PartialEq)]
50#[non_exhaustive]
51pub struct CreateCollectionOptions<'a> {
52    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
53    pub bucket_name: &'a str,
54    pub scope_name: &'a str,
55    pub collection_name: &'a str,
56    pub max_ttl: Option<i32>,
57    pub history_enabled: Option<bool>,
58}
59
60#[derive(Debug, Clone, Eq, PartialEq)]
61#[non_exhaustive]
62pub struct UpdateCollectionOptions<'a> {
63    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
64    pub bucket_name: &'a str,
65    pub scope_name: &'a str,
66    pub collection_name: &'a str,
67    pub max_ttl: Option<i32>,
68    pub history_enabled: Option<bool>,
69}
70
71#[derive(Debug, Clone, Eq, PartialEq)]
72#[non_exhaustive]
73pub struct DeleteCollectionOptions<'a> {
74    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
75    pub bucket_name: &'a str,
76    pub scope_name: &'a str,
77    pub collection_name: &'a str,
78}
79
80#[derive(Debug, Clone, Eq, PartialEq)]
81#[non_exhaustive]
82pub struct GetTerseClusterConfigOptions<'a> {
83    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
84}
85
86#[derive(Debug, Clone, Eq, PartialEq)]
87#[non_exhaustive]
88pub struct GetFullClusterConfigOptions<'a> {
89    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
90}
91
92#[derive(Debug, Clone, Eq, PartialEq)]
93#[non_exhaustive]
94pub struct GetTerseBucketConfigOptions<'a> {
95    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
96    pub bucket_name: &'a str,
97}
98
99#[derive(Debug, Clone, Eq, PartialEq)]
100#[non_exhaustive]
101pub struct GetFullBucketConfigOptions<'a> {
102    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
103    pub bucket_name: &'a str,
104}
105
106#[derive(Debug, Clone, Eq, PartialEq)]
107#[non_exhaustive]
108pub struct LoadSampleBucketOptions<'a> {
109    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
110    pub bucket_name: &'a str,
111}
112
113#[derive(Debug, Clone, Eq, PartialEq)]
114pub struct EnsureManifestPollOptions<C: Client> {
115    pub client: Arc<C>,
116    pub targets: Vec<NodeTarget>,
117}
118
119#[derive(Debug, Clone, Eq, PartialEq)]
120#[non_exhaustive]
121pub struct GetAllBucketsOptions<'a> {
122    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
123}
124
125#[derive(Debug, Clone, Eq, PartialEq)]
126#[non_exhaustive]
127pub struct GetBucketOptions<'a> {
128    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
129    pub bucket_name: &'a str,
130}
131
132#[derive(Debug, Clone, Eq, PartialEq)]
133#[non_exhaustive]
134pub struct CreateBucketOptions<'a> {
135    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
136    pub bucket_name: &'a str,
137    pub bucket_settings: &'a BucketSettings,
138}
139
140#[derive(Debug, Clone, Eq, PartialEq)]
141#[non_exhaustive]
142pub struct UpdateBucketOptions<'a> {
143    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
144    pub bucket_name: &'a str,
145    pub bucket_settings: &'a BucketSettings,
146}
147
148#[derive(Debug, Clone, Eq, PartialEq)]
149#[non_exhaustive]
150pub struct DeleteBucketOptions<'a> {
151    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
152    pub bucket_name: &'a str,
153}
154
155#[derive(Debug, Clone, Eq, PartialEq)]
156#[non_exhaustive]
157pub struct FlushBucketOptions<'a> {
158    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
159    pub bucket_name: &'a str,
160}
161
162#[derive(Debug, Clone, Eq, PartialEq)]
163pub struct EnsureBucketPollOptions<C: Client> {
164    pub client: Arc<C>,
165    pub targets: Vec<NodeTarget>,
166}
167
168#[derive(Debug, Clone, Eq, PartialEq)]
169#[non_exhaustive]
170pub struct GetUserOptions<'a> {
171    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
172    pub username: &'a str,
173    pub auth_domain: &'a str,
174}
175
176#[derive(Debug, Clone, Eq, PartialEq)]
177#[non_exhaustive]
178pub struct GetAllUsersOptions<'a> {
179    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
180    pub auth_domain: &'a str,
181}
182
183#[derive(Debug, Clone, Eq, PartialEq)]
184#[non_exhaustive]
185pub struct UpsertUserOptions<'a> {
186    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
187    pub user: &'a User,
188    pub auth_domain: &'a str,
189}
190
191#[derive(Debug, Clone, Eq, PartialEq)]
192#[non_exhaustive]
193pub struct DeleteUserOptions<'a> {
194    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
195    pub username: &'a str,
196    pub auth_domain: &'a str,
197}
198
199#[derive(Debug, Clone, Eq, PartialEq)]
200#[non_exhaustive]
201pub struct GetRolesOptions<'a> {
202    pub permission: Option<&'a str>,
203    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
204}
205
206#[derive(Debug, Clone, Eq, PartialEq)]
207#[non_exhaustive]
208pub struct GetGroupOptions<'a> {
209    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
210    pub group_name: &'a str,
211}
212
213#[derive(Debug, Clone, Eq, PartialEq)]
214#[non_exhaustive]
215pub struct GetAllGroupsOptions<'a> {
216    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
217}
218
219#[derive(Debug, Clone, Eq, PartialEq)]
220#[non_exhaustive]
221pub struct UpsertGroupOptions<'a> {
222    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
223    pub group: &'a Group,
224}
225
226#[derive(Debug, Clone, Eq, PartialEq)]
227#[non_exhaustive]
228pub struct DeleteGroupOptions<'a> {
229    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
230    pub group_name: &'a str,
231}
232
233#[derive(Debug, Clone, Eq, PartialEq)]
234#[non_exhaustive]
235pub struct ChangePasswordOptions<'a> {
236    pub on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
237    pub new_password: &'a str,
238}
239
240#[derive(Debug, Clone, Eq, PartialEq)]
241pub struct EnsureUserPollOptions<C: Client> {
242    pub client: Arc<C>,
243    pub targets: Vec<NodeTarget>,
244}
245
246#[derive(Debug, Clone, Eq, PartialEq)]
247pub struct EnsureGroupPollOptions<C: Client> {
248    pub client: Arc<C>,
249    pub targets: Vec<NodeTarget>,
250}
251
252#[derive(Debug, Clone, Default)]
253#[non_exhaustive]
254pub struct IndexStatusOptions<'a> {
255    pub(crate) on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
256}
257
258impl<'a> IndexStatusOptions<'a> {
259    pub fn new() -> Self {
260        Self::default()
261    }
262
263    pub fn on_behalf_of_info(
264        mut self,
265        on_behalf_of: impl Into<Option<&'a OnBehalfOfInfo>>,
266    ) -> Self {
267        self.on_behalf_of_info = on_behalf_of.into();
268        self
269    }
270}
271
272#[derive(Debug, Clone, Default)]
273#[non_exhaustive]
274pub struct GetAutoFailoverSettingsOptions<'a> {
275    pub(crate) on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
276}
277
278impl<'a> GetAutoFailoverSettingsOptions<'a> {
279    pub fn new() -> Self {
280        Self::default()
281    }
282
283    pub fn on_behalf_of_info(
284        mut self,
285        on_behalf_of: impl Into<Option<&'a OnBehalfOfInfo>>,
286    ) -> Self {
287        self.on_behalf_of_info = on_behalf_of.into();
288        self
289    }
290}
291
292#[derive(Debug, Clone)]
293#[non_exhaustive]
294pub struct GetBucketStatsOptions<'a> {
295    pub(crate) on_behalf_of_info: Option<&'a OnBehalfOfInfo>,
296    pub(crate) bucket_name: &'a str,
297}
298
299impl<'a> GetBucketStatsOptions<'a> {
300    pub fn new(bucket_name: &'a str) -> Self {
301        Self {
302            bucket_name,
303            on_behalf_of_info: None,
304        }
305    }
306
307    pub fn on_behalf_of_info(
308        mut self,
309        on_behalf_of: impl Into<Option<&'a OnBehalfOfInfo>>,
310    ) -> Self {
311        self.on_behalf_of_info = on_behalf_of.into();
312        self
313    }
314}