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