Skip to main content

unitycatalog_client/codegen/schemas/
resource.rs

1// @generated — do not edit by hand.
2#![allow(unused_imports)]
3use super::builders::*;
4use super::client::SchemaServiceClient;
5use unitycatalog_common::models::agent_skills::v0alpha1::*;
6use unitycatalog_common::models::agents::v0alpha1::*;
7use unitycatalog_common::models::functions::v1::*;
8use unitycatalog_common::models::registered_models::v1::*;
9use unitycatalog_common::models::schemas::v1::*;
10use unitycatalog_common::models::tables::v1::*;
11use unitycatalog_common::models::volumes::v1::*;
12/// A client scoped to a single `schema`.
13#[derive(Clone)]
14pub struct SchemaClient {
15    pub(crate) catalog_name: String,
16    pub(crate) schema_name: String,
17    pub(crate) client: SchemaServiceClient,
18}
19impl SchemaClient {
20    /// Create a client bound to the resource's name components.
21    pub fn new(
22        catalog_name: impl Into<String>,
23        schema_name: impl Into<String>,
24        client: SchemaServiceClient,
25    ) -> Self {
26        Self {
27            catalog_name: catalog_name.into(),
28            schema_name: schema_name.into(),
29            client,
30        }
31    }
32    /// Create a `schema` client from its dot-joined full name (e.g. `"catalog_name.schema_name"`).
33    pub fn from_full_name(full_name: impl Into<String>, client: SchemaServiceClient) -> Self {
34        let full_name = full_name.into();
35        let mut parts = full_name.splitn(2usize, '.');
36        let catalog_name = parts.next().unwrap_or_default();
37        let schema_name = parts.next().unwrap_or_default();
38        Self::new(catalog_name, schema_name, client)
39    }
40    /// The `catalog_name` component of this resource's name.
41    pub fn catalog_name(&self) -> &str {
42        &self.catalog_name
43    }
44    /// This resource's own name (the leaf component).
45    pub fn name(&self) -> &str {
46        &self.schema_name
47    }
48    /// The fully-qualified name of this resource (its dot-joined name components).
49    pub fn full_name(&self) -> String {
50        format!("{}.{}", self.catalog_name, self.schema_name)
51    }
52    /// Gets the specified schema within the metastore.
53    /// The caller must be a metastore admin, the owner of the schema,
54    /// or a user that has the USE_SCHEMA privilege on the schema.
55    pub fn get(&self) -> GetSchemaBuilder {
56        GetSchemaBuilder::new(
57            self.client.clone(),
58            format!("{}.{}", self.catalog_name, self.schema_name),
59        )
60    }
61    /// Updates a schema for a catalog. The caller must be the owner of the schema or a metastore admin.
62    /// If the caller is a metastore admin, only the owner field can be changed in the update.
63    /// If the name field must be updated, the caller must be a metastore admin or have the CREATE_SCHEMA
64    /// privilege on the parent catalog.
65    pub fn update(&self) -> UpdateSchemaBuilder {
66        UpdateSchemaBuilder::new(
67            self.client.clone(),
68            format!("{}.{}", self.catalog_name, self.schema_name),
69        )
70    }
71    /// Deletes the specified schema from the parent catalog. The caller must be the owner
72    /// of the schema or an owner of the parent catalog.
73    pub fn delete(&self) -> DeleteSchemaBuilder {
74        DeleteSchemaBuilder::new(
75            self.client.clone(),
76            format!("{}.{}", self.catalog_name, self.schema_name),
77        )
78    }
79    /// Access a `agent` within this resource.
80    pub fn agent(&self, agent_name: impl Into<String>) -> crate::codegen::agents::AgentClient {
81        crate::codegen::agents::AgentClient::new(
82            &self.catalog_name,
83            &self.schema_name,
84            agent_name,
85            crate::codegen::agents::AgentServiceClient::new(
86                self.client.client.clone(),
87                self.client.base_url.clone(),
88            ),
89        )
90    }
91    /// Create a `agent` within this resource.
92    pub fn create_agent(
93        &self,
94        name: impl Into<String>,
95        invocation_protocol: InvocationProtocol,
96        endpoint: impl Into<String>,
97    ) -> crate::codegen::agents::CreateAgentBuilder {
98        crate::codegen::agents::CreateAgentBuilder::new(
99            crate::codegen::agents::AgentServiceClient::new(
100                self.client.client.clone(),
101                self.client.base_url.clone(),
102            ),
103            &self.catalog_name,
104            &self.schema_name,
105            name,
106            invocation_protocol,
107            endpoint,
108        )
109    }
110    /// List `agent` resources within this resource.
111    pub fn list_agents(&self) -> crate::codegen::agents::ListAgentsBuilder {
112        crate::codegen::agents::ListAgentsBuilder::new(
113            crate::codegen::agents::AgentServiceClient::new(
114                self.client.client.clone(),
115                self.client.base_url.clone(),
116            ),
117            &self.catalog_name,
118            &self.schema_name,
119        )
120    }
121    /// Access a `agent_skill` within this resource.
122    pub fn agent_skill(
123        &self,
124        agent_skill_name: impl Into<String>,
125    ) -> crate::codegen::agent_skills::AgentSkillClient {
126        crate::codegen::agent_skills::AgentSkillClient::new(
127            &self.catalog_name,
128            &self.schema_name,
129            agent_skill_name,
130            crate::codegen::agent_skills::AgentSkillServiceClient::new(
131                self.client.client.clone(),
132                self.client.base_url.clone(),
133            ),
134        )
135    }
136    /// Create a `agent_skill` within this resource.
137    pub fn create_agent_skill(
138        &self,
139        name: impl Into<String>,
140        agent_skill_type: AgentSkillType,
141    ) -> crate::codegen::agent_skills::CreateAgentSkillBuilder {
142        crate::codegen::agent_skills::CreateAgentSkillBuilder::new(
143            crate::codegen::agent_skills::AgentSkillServiceClient::new(
144                self.client.client.clone(),
145                self.client.base_url.clone(),
146            ),
147            &self.catalog_name,
148            &self.schema_name,
149            name,
150            agent_skill_type,
151        )
152    }
153    /// List `agent_skill` resources within this resource.
154    pub fn list_agent_skills(&self) -> crate::codegen::agent_skills::ListAgentSkillsBuilder {
155        crate::codegen::agent_skills::ListAgentSkillsBuilder::new(
156            crate::codegen::agent_skills::AgentSkillServiceClient::new(
157                self.client.client.clone(),
158                self.client.base_url.clone(),
159            ),
160            &self.catalog_name,
161            &self.schema_name,
162        )
163    }
164    /// Access a `function` within this resource.
165    pub fn function(
166        &self,
167        function_name: impl Into<String>,
168    ) -> crate::codegen::functions::FunctionClient {
169        crate::codegen::functions::FunctionClient::new(
170            &self.catalog_name,
171            &self.schema_name,
172            function_name,
173            crate::codegen::functions::FunctionServiceClient::new(
174                self.client.client.clone(),
175                self.client.base_url.clone(),
176            ),
177        )
178    }
179    /// Create a `function` within this resource.
180    pub fn create_function(
181        &self,
182        function_info: CreateFunction,
183    ) -> crate::codegen::functions::CreateFunctionBuilder {
184        crate::codegen::functions::CreateFunctionBuilder::new(
185            crate::codegen::functions::FunctionServiceClient::new(
186                self.client.client.clone(),
187                self.client.base_url.clone(),
188            ),
189            function_info,
190        )
191    }
192    /// List `function` resources within this resource.
193    pub fn list_functions(&self) -> crate::codegen::functions::ListFunctionsBuilder {
194        crate::codegen::functions::ListFunctionsBuilder::new(
195            crate::codegen::functions::FunctionServiceClient::new(
196                self.client.client.clone(),
197                self.client.base_url.clone(),
198            ),
199            &self.catalog_name,
200            &self.schema_name,
201        )
202    }
203    /// Access a `registered_model` within this resource.
204    pub fn registered_model(
205        &self,
206        registered_model_name: impl Into<String>,
207    ) -> crate::codegen::registered_models::RegisteredModelClient {
208        crate::codegen::registered_models::RegisteredModelClient::new(
209            &self.catalog_name,
210            &self.schema_name,
211            registered_model_name,
212            crate::codegen::registered_models::RegisteredModelServiceClient::new(
213                self.client.client.clone(),
214                self.client.base_url.clone(),
215            ),
216        )
217    }
218    /// Create a `registered_model` within this resource.
219    pub fn create_registered_model(
220        &self,
221        name: impl Into<String>,
222    ) -> crate::codegen::registered_models::CreateRegisteredModelBuilder {
223        crate::codegen::registered_models::CreateRegisteredModelBuilder::new(
224            crate::codegen::registered_models::RegisteredModelServiceClient::new(
225                self.client.client.clone(),
226                self.client.base_url.clone(),
227            ),
228            name,
229            &self.catalog_name,
230            &self.schema_name,
231        )
232    }
233    /// List `registered_model` resources within this resource.
234    pub fn list_registered_models(
235        &self,
236    ) -> crate::codegen::registered_models::ListRegisteredModelsBuilder {
237        crate::codegen::registered_models::ListRegisteredModelsBuilder::new(
238            crate::codegen::registered_models::RegisteredModelServiceClient::new(
239                self.client.client.clone(),
240                self.client.base_url.clone(),
241            ),
242        )
243    }
244    /// Access a `table` within this resource.
245    pub fn table(&self, table_name: impl Into<String>) -> crate::codegen::tables::TableClient {
246        crate::codegen::tables::TableClient::new(
247            &self.catalog_name,
248            &self.schema_name,
249            table_name,
250            crate::codegen::tables::TableServiceClient::new(
251                self.client.client.clone(),
252                self.client.base_url.clone(),
253            ),
254        )
255    }
256    /// Create a `table` within this resource.
257    pub fn create_table(
258        &self,
259        name: impl Into<String>,
260        table_type: TableType,
261        data_source_format: DataSourceFormat,
262    ) -> crate::codegen::tables::CreateTableBuilder {
263        crate::codegen::tables::CreateTableBuilder::new(
264            crate::codegen::tables::TableServiceClient::new(
265                self.client.client.clone(),
266                self.client.base_url.clone(),
267            ),
268            name,
269            &self.schema_name,
270            &self.catalog_name,
271            table_type,
272            data_source_format,
273        )
274    }
275    /// List `table` resources within this resource.
276    pub fn list_tables(&self) -> crate::codegen::tables::ListTablesBuilder {
277        crate::codegen::tables::ListTablesBuilder::new(
278            crate::codegen::tables::TableServiceClient::new(
279                self.client.client.clone(),
280                self.client.base_url.clone(),
281            ),
282            &self.catalog_name,
283            &self.schema_name,
284        )
285    }
286    /// Access a `volume` within this resource.
287    pub fn volume(&self, volume_name: impl Into<String>) -> crate::codegen::volumes::VolumeClient {
288        crate::codegen::volumes::VolumeClient::new(
289            &self.catalog_name,
290            &self.schema_name,
291            volume_name,
292            crate::codegen::volumes::VolumeServiceClient::new(
293                self.client.client.clone(),
294                self.client.base_url.clone(),
295            ),
296        )
297    }
298    /// Create a `volume` within this resource.
299    pub fn create_volume(
300        &self,
301        name: impl Into<String>,
302        volume_type: VolumeType,
303    ) -> crate::codegen::volumes::CreateVolumeBuilder {
304        crate::codegen::volumes::CreateVolumeBuilder::new(
305            crate::codegen::volumes::VolumeServiceClient::new(
306                self.client.client.clone(),
307                self.client.base_url.clone(),
308            ),
309            &self.catalog_name,
310            &self.schema_name,
311            name,
312            volume_type,
313        )
314    }
315    /// List `volume` resources within this resource.
316    pub fn list_volumes(&self) -> crate::codegen::volumes::ListVolumesBuilder {
317        crate::codegen::volumes::ListVolumesBuilder::new(
318            crate::codegen::volumes::VolumeServiceClient::new(
319                self.client.client.clone(),
320                self.client.base_url.clone(),
321            ),
322            &self.catalog_name,
323            &self.schema_name,
324        )
325    }
326}