1#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, Debug, PartialEq)]
5pub enum Resource {
6 Agent(super::agents::v0alpha1::Agent),
7 AgentSkill(super::agent_skills::v0alpha1::AgentSkill),
8 Catalog(super::catalogs::v1::Catalog),
9 Column(super::tables::v1::Column),
10 Credential(super::credentials::v1::Credential),
11 ExternalLocation(super::external_locations::v1::ExternalLocation),
12 Function(super::functions::v1::Function),
13 ModelVersion(super::model_versions::v1::ModelVersion),
14 PolicyInfo(super::policies::v1::PolicyInfo),
15 Provider(super::providers::v1::Provider),
16 Recipient(super::recipients::v1::Recipient),
17 RegisteredModel(super::registered_models::v1::RegisteredModel),
18 Schema(super::schemas::v1::Schema),
19 Share(super::shares::v1::Share),
20 StagingTable(super::staging_tables::v1::StagingTable),
21 Table(super::tables::v1::Table),
22 TagPolicy(super::tags::v1::TagPolicy),
23 Volume(super::volumes::v1::Volume),
24}
25#[derive(
27 ::strum::AsRefStr,
28 ::strum::Display,
29 ::strum::EnumIter,
30 ::strum::EnumString,
31 ::serde::Serialize,
32 ::serde::Deserialize,
33 Hash,
34 Clone,
35 Copy,
36 Debug,
37 PartialEq,
38 Eq,
39 PartialOrd,
40 Ord,
41)]
42#[strum(serialize_all = "snake_case", ascii_case_insensitive)]
43#[serde(rename_all = "snake_case")]
44#[cfg_attr(feature = "sqlx", derive(::sqlx::Type))]
45#[cfg_attr(
46 feature = "sqlx",
47 sqlx(type_name = "object_label", rename_all = "snake_case")
48)]
49pub enum ObjectLabel {
50 Agent,
51 AgentSkill,
52 Catalog,
53 Column,
54 Credential,
55 ExternalLocation,
56 Function,
57 ModelVersion,
58 PolicyInfo,
59 Provider,
60 Recipient,
61 RegisteredModel,
62 Schema,
63 Share,
64 StagingTable,
65 Table,
66 TagPolicy,
67 Volume,
68}
69impl Resource {
70 pub fn resource_label(&self) -> &ObjectLabel {
72 match self {
73 Resource::Agent(_) => &ObjectLabel::Agent,
74 Resource::AgentSkill(_) => &ObjectLabel::AgentSkill,
75 Resource::Catalog(_) => &ObjectLabel::Catalog,
76 Resource::Column(_) => &ObjectLabel::Column,
77 Resource::Credential(_) => &ObjectLabel::Credential,
78 Resource::ExternalLocation(_) => &ObjectLabel::ExternalLocation,
79 Resource::Function(_) => &ObjectLabel::Function,
80 Resource::ModelVersion(_) => &ObjectLabel::ModelVersion,
81 Resource::PolicyInfo(_) => &ObjectLabel::PolicyInfo,
82 Resource::Provider(_) => &ObjectLabel::Provider,
83 Resource::Recipient(_) => &ObjectLabel::Recipient,
84 Resource::RegisteredModel(_) => &ObjectLabel::RegisteredModel,
85 Resource::Schema(_) => &ObjectLabel::Schema,
86 Resource::Share(_) => &ObjectLabel::Share,
87 Resource::StagingTable(_) => &ObjectLabel::StagingTable,
88 Resource::Table(_) => &ObjectLabel::Table,
89 Resource::TagPolicy(_) => &ObjectLabel::TagPolicy,
90 Resource::Volume(_) => &ObjectLabel::Volume,
91 }
92 }
93}
94impl From<super::agents::v0alpha1::Agent> for Resource {
95 fn from(v: super::agents::v0alpha1::Agent) -> Self {
96 Resource::Agent(v)
97 }
98}
99impl TryFrom<Resource> for super::agents::v0alpha1::Agent {
100 type Error = crate::Error;
101 fn try_from(r: Resource) -> Result<Self, Self::Error> {
102 match r {
103 Resource::Agent(v) => Ok(v),
104 _ => Err(<crate::Error>::generic(concat!(
105 "Resource is not a ",
106 stringify!(Agent)
107 ))),
108 }
109 }
110}
111impl From<super::agent_skills::v0alpha1::AgentSkill> for Resource {
112 fn from(v: super::agent_skills::v0alpha1::AgentSkill) -> Self {
113 Resource::AgentSkill(v)
114 }
115}
116impl TryFrom<Resource> for super::agent_skills::v0alpha1::AgentSkill {
117 type Error = crate::Error;
118 fn try_from(r: Resource) -> Result<Self, Self::Error> {
119 match r {
120 Resource::AgentSkill(v) => Ok(v),
121 _ => Err(<crate::Error>::generic(concat!(
122 "Resource is not a ",
123 stringify!(AgentSkill)
124 ))),
125 }
126 }
127}
128impl From<super::catalogs::v1::Catalog> for Resource {
129 fn from(v: super::catalogs::v1::Catalog) -> Self {
130 Resource::Catalog(v)
131 }
132}
133impl TryFrom<Resource> for super::catalogs::v1::Catalog {
134 type Error = crate::Error;
135 fn try_from(r: Resource) -> Result<Self, Self::Error> {
136 match r {
137 Resource::Catalog(v) => Ok(v),
138 _ => Err(<crate::Error>::generic(concat!(
139 "Resource is not a ",
140 stringify!(Catalog)
141 ))),
142 }
143 }
144}
145impl From<super::tables::v1::Column> for Resource {
146 fn from(v: super::tables::v1::Column) -> Self {
147 Resource::Column(v)
148 }
149}
150impl TryFrom<Resource> for super::tables::v1::Column {
151 type Error = crate::Error;
152 fn try_from(r: Resource) -> Result<Self, Self::Error> {
153 match r {
154 Resource::Column(v) => Ok(v),
155 _ => Err(<crate::Error>::generic(concat!(
156 "Resource is not a ",
157 stringify!(Column)
158 ))),
159 }
160 }
161}
162impl From<super::credentials::v1::Credential> for Resource {
163 fn from(v: super::credentials::v1::Credential) -> Self {
164 Resource::Credential(v)
165 }
166}
167impl TryFrom<Resource> for super::credentials::v1::Credential {
168 type Error = crate::Error;
169 fn try_from(r: Resource) -> Result<Self, Self::Error> {
170 match r {
171 Resource::Credential(v) => Ok(v),
172 _ => Err(<crate::Error>::generic(concat!(
173 "Resource is not a ",
174 stringify!(Credential)
175 ))),
176 }
177 }
178}
179impl From<super::external_locations::v1::ExternalLocation> for Resource {
180 fn from(v: super::external_locations::v1::ExternalLocation) -> Self {
181 Resource::ExternalLocation(v)
182 }
183}
184impl TryFrom<Resource> for super::external_locations::v1::ExternalLocation {
185 type Error = crate::Error;
186 fn try_from(r: Resource) -> Result<Self, Self::Error> {
187 match r {
188 Resource::ExternalLocation(v) => Ok(v),
189 _ => Err(<crate::Error>::generic(concat!(
190 "Resource is not a ",
191 stringify!(ExternalLocation)
192 ))),
193 }
194 }
195}
196impl From<super::functions::v1::Function> for Resource {
197 fn from(v: super::functions::v1::Function) -> Self {
198 Resource::Function(v)
199 }
200}
201impl TryFrom<Resource> for super::functions::v1::Function {
202 type Error = crate::Error;
203 fn try_from(r: Resource) -> Result<Self, Self::Error> {
204 match r {
205 Resource::Function(v) => Ok(v),
206 _ => Err(<crate::Error>::generic(concat!(
207 "Resource is not a ",
208 stringify!(Function)
209 ))),
210 }
211 }
212}
213impl From<super::model_versions::v1::ModelVersion> for Resource {
214 fn from(v: super::model_versions::v1::ModelVersion) -> Self {
215 Resource::ModelVersion(v)
216 }
217}
218impl TryFrom<Resource> for super::model_versions::v1::ModelVersion {
219 type Error = crate::Error;
220 fn try_from(r: Resource) -> Result<Self, Self::Error> {
221 match r {
222 Resource::ModelVersion(v) => Ok(v),
223 _ => Err(<crate::Error>::generic(concat!(
224 "Resource is not a ",
225 stringify!(ModelVersion)
226 ))),
227 }
228 }
229}
230impl From<super::policies::v1::PolicyInfo> for Resource {
231 fn from(v: super::policies::v1::PolicyInfo) -> Self {
232 Resource::PolicyInfo(v)
233 }
234}
235impl TryFrom<Resource> for super::policies::v1::PolicyInfo {
236 type Error = crate::Error;
237 fn try_from(r: Resource) -> Result<Self, Self::Error> {
238 match r {
239 Resource::PolicyInfo(v) => Ok(v),
240 _ => Err(<crate::Error>::generic(concat!(
241 "Resource is not a ",
242 stringify!(PolicyInfo)
243 ))),
244 }
245 }
246}
247impl From<super::providers::v1::Provider> for Resource {
248 fn from(v: super::providers::v1::Provider) -> Self {
249 Resource::Provider(v)
250 }
251}
252impl TryFrom<Resource> for super::providers::v1::Provider {
253 type Error = crate::Error;
254 fn try_from(r: Resource) -> Result<Self, Self::Error> {
255 match r {
256 Resource::Provider(v) => Ok(v),
257 _ => Err(<crate::Error>::generic(concat!(
258 "Resource is not a ",
259 stringify!(Provider)
260 ))),
261 }
262 }
263}
264impl From<super::recipients::v1::Recipient> for Resource {
265 fn from(v: super::recipients::v1::Recipient) -> Self {
266 Resource::Recipient(v)
267 }
268}
269impl TryFrom<Resource> for super::recipients::v1::Recipient {
270 type Error = crate::Error;
271 fn try_from(r: Resource) -> Result<Self, Self::Error> {
272 match r {
273 Resource::Recipient(v) => Ok(v),
274 _ => Err(<crate::Error>::generic(concat!(
275 "Resource is not a ",
276 stringify!(Recipient)
277 ))),
278 }
279 }
280}
281impl From<super::registered_models::v1::RegisteredModel> for Resource {
282 fn from(v: super::registered_models::v1::RegisteredModel) -> Self {
283 Resource::RegisteredModel(v)
284 }
285}
286impl TryFrom<Resource> for super::registered_models::v1::RegisteredModel {
287 type Error = crate::Error;
288 fn try_from(r: Resource) -> Result<Self, Self::Error> {
289 match r {
290 Resource::RegisteredModel(v) => Ok(v),
291 _ => Err(<crate::Error>::generic(concat!(
292 "Resource is not a ",
293 stringify!(RegisteredModel)
294 ))),
295 }
296 }
297}
298impl From<super::schemas::v1::Schema> for Resource {
299 fn from(v: super::schemas::v1::Schema) -> Self {
300 Resource::Schema(v)
301 }
302}
303impl TryFrom<Resource> for super::schemas::v1::Schema {
304 type Error = crate::Error;
305 fn try_from(r: Resource) -> Result<Self, Self::Error> {
306 match r {
307 Resource::Schema(v) => Ok(v),
308 _ => Err(<crate::Error>::generic(concat!(
309 "Resource is not a ",
310 stringify!(Schema)
311 ))),
312 }
313 }
314}
315impl From<super::shares::v1::Share> for Resource {
316 fn from(v: super::shares::v1::Share) -> Self {
317 Resource::Share(v)
318 }
319}
320impl TryFrom<Resource> for super::shares::v1::Share {
321 type Error = crate::Error;
322 fn try_from(r: Resource) -> Result<Self, Self::Error> {
323 match r {
324 Resource::Share(v) => Ok(v),
325 _ => Err(<crate::Error>::generic(concat!(
326 "Resource is not a ",
327 stringify!(Share)
328 ))),
329 }
330 }
331}
332impl From<super::staging_tables::v1::StagingTable> for Resource {
333 fn from(v: super::staging_tables::v1::StagingTable) -> Self {
334 Resource::StagingTable(v)
335 }
336}
337impl TryFrom<Resource> for super::staging_tables::v1::StagingTable {
338 type Error = crate::Error;
339 fn try_from(r: Resource) -> Result<Self, Self::Error> {
340 match r {
341 Resource::StagingTable(v) => Ok(v),
342 _ => Err(<crate::Error>::generic(concat!(
343 "Resource is not a ",
344 stringify!(StagingTable)
345 ))),
346 }
347 }
348}
349impl From<super::tables::v1::Table> for Resource {
350 fn from(v: super::tables::v1::Table) -> Self {
351 Resource::Table(v)
352 }
353}
354impl TryFrom<Resource> for super::tables::v1::Table {
355 type Error = crate::Error;
356 fn try_from(r: Resource) -> Result<Self, Self::Error> {
357 match r {
358 Resource::Table(v) => Ok(v),
359 _ => Err(<crate::Error>::generic(concat!(
360 "Resource is not a ",
361 stringify!(Table)
362 ))),
363 }
364 }
365}
366impl From<super::tags::v1::TagPolicy> for Resource {
367 fn from(v: super::tags::v1::TagPolicy) -> Self {
368 Resource::TagPolicy(v)
369 }
370}
371impl TryFrom<Resource> for super::tags::v1::TagPolicy {
372 type Error = crate::Error;
373 fn try_from(r: Resource) -> Result<Self, Self::Error> {
374 match r {
375 Resource::TagPolicy(v) => Ok(v),
376 _ => Err(<crate::Error>::generic(concat!(
377 "Resource is not a ",
378 stringify!(TagPolicy)
379 ))),
380 }
381 }
382}
383impl From<super::volumes::v1::Volume> for Resource {
384 fn from(v: super::volumes::v1::Volume) -> Self {
385 Resource::Volume(v)
386 }
387}
388impl TryFrom<Resource> for super::volumes::v1::Volume {
389 type Error = crate::Error;
390 fn try_from(r: Resource) -> Result<Self, Self::Error> {
391 match r {
392 Resource::Volume(v) => Ok(v),
393 _ => Err(<crate::Error>::generic(concat!(
394 "Resource is not a ",
395 stringify!(Volume)
396 ))),
397 }
398 }
399}
400#[cfg(feature = "store")]
401use crate::Error;
402#[cfg(feature = "store")]
403use crate::models::object::Object;
404#[cfg(feature = "store")]
405use crate::models::resources::{ResourceExt, ResourceIdent, ResourceName, ResourceRef};
406#[cfg(feature = "store")]
407impl TryFrom<Object> for super::agents::v0alpha1::Agent {
408 type Error = Error;
409 fn try_from(object: Object) -> Result<Self, Self::Error> {
410 let props = object
411 .properties
412 .ok_or_else(|| Error::generic("expected properties"))?;
413 let mut res: super::agents::v0alpha1::Agent = ::serde_json::from_value(props)?;
414 res.agent_id = object.id.hyphenated().to_string();
415 res.full_name = res.qualified_name();
416 Ok(res)
417 }
418}
419#[cfg(feature = "store")]
420impl TryFrom<super::agents::v0alpha1::Agent> for Object {
421 type Error = Error;
422 fn try_from(obj: super::agents::v0alpha1::Agent) -> Result<Self, Self::Error> {
423 let id = ::uuid::Uuid::parse_str(&obj.agent_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
424 let name = obj.resource_name();
425 let mut properties = ::serde_json::to_value(obj)?;
426 if let ::serde_json::Value::Object(ref mut map) = properties {
427 map.remove("full_name");
428 }
429 Ok(Object {
430 id,
431 name,
432 label: ObjectLabel::Agent,
433 properties: Some(properties),
434 version: 0,
435 updated_at: None,
436 created_at: chrono::Utc::now(),
437 })
438 }
439}
440#[cfg(feature = "store")]
441impl ResourceExt for super::agents::v0alpha1::Agent {
442 fn resource_name(&self) -> ResourceName {
443 ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
444 }
445 fn resource_ref(&self) -> ResourceRef {
446 ::uuid::Uuid::parse_str(&self.agent_id)
447 .ok()
448 .map(ResourceRef::Uuid)
449 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
450 }
451 fn resource_ident(&self) -> ResourceIdent {
452 (ObjectLabel::Agent).to_ident(self.resource_ref())
453 }
454}
455#[cfg(feature = "store")]
456impl TryFrom<Object> for super::agent_skills::v0alpha1::AgentSkill {
457 type Error = Error;
458 fn try_from(object: Object) -> Result<Self, Self::Error> {
459 let props = object
460 .properties
461 .ok_or_else(|| Error::generic("expected properties"))?;
462 let mut res: super::agent_skills::v0alpha1::AgentSkill = ::serde_json::from_value(props)?;
463 res.agent_skill_id = object.id.hyphenated().to_string();
464 res.full_name = res.qualified_name();
465 Ok(res)
466 }
467}
468#[cfg(feature = "store")]
469impl TryFrom<super::agent_skills::v0alpha1::AgentSkill> for Object {
470 type Error = Error;
471 fn try_from(obj: super::agent_skills::v0alpha1::AgentSkill) -> Result<Self, Self::Error> {
472 let id =
473 ::uuid::Uuid::parse_str(&obj.agent_skill_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
474 let name = obj.resource_name();
475 let mut properties = ::serde_json::to_value(obj)?;
476 if let ::serde_json::Value::Object(ref mut map) = properties {
477 map.remove("full_name");
478 }
479 Ok(Object {
480 id,
481 name,
482 label: ObjectLabel::AgentSkill,
483 properties: Some(properties),
484 version: 0,
485 updated_at: None,
486 created_at: chrono::Utc::now(),
487 })
488 }
489}
490#[cfg(feature = "store")]
491impl ResourceExt for super::agent_skills::v0alpha1::AgentSkill {
492 fn resource_name(&self) -> ResourceName {
493 ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
494 }
495 fn resource_ref(&self) -> ResourceRef {
496 ::uuid::Uuid::parse_str(&self.agent_skill_id)
497 .ok()
498 .map(ResourceRef::Uuid)
499 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
500 }
501 fn resource_ident(&self) -> ResourceIdent {
502 (ObjectLabel::AgentSkill).to_ident(self.resource_ref())
503 }
504}
505#[cfg(feature = "store")]
506impl TryFrom<Object> for super::catalogs::v1::Catalog {
507 type Error = Error;
508 fn try_from(object: Object) -> Result<Self, Self::Error> {
509 let props = object
510 .properties
511 .ok_or_else(|| Error::generic("expected properties"))?;
512 let mut res: super::catalogs::v1::Catalog = ::serde_json::from_value(props)?;
513 res.id = Some(object.id.hyphenated().to_string());
514 Ok(res)
515 }
516}
517#[cfg(feature = "store")]
518impl TryFrom<super::catalogs::v1::Catalog> for Object {
519 type Error = Error;
520 fn try_from(obj: super::catalogs::v1::Catalog) -> Result<Self, Self::Error> {
521 let id = obj
522 .id
523 .as_ref()
524 .map(|id| ::uuid::Uuid::parse_str(id))
525 .transpose()?
526 .unwrap_or_else(::uuid::Uuid::nil);
527 let name = obj.resource_name();
528 let properties = ::serde_json::to_value(obj)?;
529 Ok(Object {
530 id,
531 name,
532 label: ObjectLabel::Catalog,
533 properties: Some(properties),
534 version: 0,
535 updated_at: None,
536 created_at: chrono::Utc::now(),
537 })
538 }
539}
540#[cfg(feature = "store")]
541impl ResourceExt for super::catalogs::v1::Catalog {
542 fn resource_name(&self) -> ResourceName {
543 ResourceName::new([&self.name])
544 }
545 fn resource_ref(&self) -> ResourceRef {
546 self.id
547 .as_ref()
548 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
549 .map(ResourceRef::Uuid)
550 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
551 }
552 fn resource_ident(&self) -> ResourceIdent {
553 (ObjectLabel::Catalog).to_ident(self.resource_ref())
554 }
555}
556#[cfg(feature = "store")]
557impl TryFrom<Object> for super::tables::v1::Column {
558 type Error = Error;
559 fn try_from(object: Object) -> Result<Self, Self::Error> {
560 let props = object
561 .properties
562 .ok_or_else(|| Error::generic("expected properties"))?;
563 let mut res: super::tables::v1::Column = ::serde_json::from_value(props)?;
564 res.column_id = Some(object.id.hyphenated().to_string());
565 Ok(res)
566 }
567}
568#[cfg(feature = "store")]
569impl TryFrom<super::tables::v1::Column> for Object {
570 type Error = Error;
571 fn try_from(obj: super::tables::v1::Column) -> Result<Self, Self::Error> {
572 let id = obj
573 .column_id
574 .as_ref()
575 .map(|id| ::uuid::Uuid::parse_str(id))
576 .transpose()?
577 .unwrap_or_else(::uuid::Uuid::nil);
578 let name = obj.resource_name();
579 let properties = ::serde_json::to_value(obj)?;
580 Ok(Object {
581 id,
582 name,
583 label: ObjectLabel::Column,
584 properties: Some(properties),
585 version: 0,
586 updated_at: None,
587 created_at: chrono::Utc::now(),
588 })
589 }
590}
591#[cfg(feature = "store")]
592impl ResourceExt for super::tables::v1::Column {
593 fn resource_name(&self) -> ResourceName {
594 ResourceName::new([&self.name])
595 }
596 fn resource_ref(&self) -> ResourceRef {
597 self.column_id
598 .as_ref()
599 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
600 .map(ResourceRef::Uuid)
601 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
602 }
603 fn resource_ident(&self) -> ResourceIdent {
604 (ObjectLabel::Column).to_ident(self.resource_ref())
605 }
606}
607#[cfg(feature = "store")]
608impl TryFrom<Object> for super::credentials::v1::Credential {
609 type Error = Error;
610 fn try_from(object: Object) -> Result<Self, Self::Error> {
611 let props = object
612 .properties
613 .ok_or_else(|| Error::generic("expected properties"))?;
614 let mut res: super::credentials::v1::Credential = ::serde_json::from_value(props)?;
615 res.id = Some(object.id.hyphenated().to_string());
616 res.full_name = res.qualified_name();
617 Ok(res)
618 }
619}
620#[cfg(feature = "store")]
621impl TryFrom<super::credentials::v1::Credential> for Object {
622 type Error = Error;
623 fn try_from(obj: super::credentials::v1::Credential) -> Result<Self, Self::Error> {
624 let id = obj
625 .id
626 .as_ref()
627 .map(|id| ::uuid::Uuid::parse_str(id))
628 .transpose()?
629 .unwrap_or_else(::uuid::Uuid::nil);
630 let name = obj.resource_name();
631 let mut properties = ::serde_json::to_value(obj)?;
632 if let ::serde_json::Value::Object(ref mut map) = properties {
633 map.remove("full_name");
634 }
635 Ok(Object {
636 id,
637 name,
638 label: ObjectLabel::Credential,
639 properties: Some(properties),
640 version: 0,
641 updated_at: None,
642 created_at: chrono::Utc::now(),
643 })
644 }
645}
646#[cfg(feature = "store")]
647impl ResourceExt for super::credentials::v1::Credential {
648 fn resource_name(&self) -> ResourceName {
649 ResourceName::new([&self.name])
650 }
651 fn resource_ref(&self) -> ResourceRef {
652 self.id
653 .as_ref()
654 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
655 .map(ResourceRef::Uuid)
656 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
657 }
658 fn resource_ident(&self) -> ResourceIdent {
659 (ObjectLabel::Credential).to_ident(self.resource_ref())
660 }
661}
662#[cfg(feature = "store")]
663impl TryFrom<Object> for super::external_locations::v1::ExternalLocation {
664 type Error = Error;
665 fn try_from(object: Object) -> Result<Self, Self::Error> {
666 let props = object
667 .properties
668 .ok_or_else(|| Error::generic("expected properties"))?;
669 let mut res: super::external_locations::v1::ExternalLocation =
670 ::serde_json::from_value(props)?;
671 res.external_location_id = Some(object.id.hyphenated().to_string());
672 Ok(res)
673 }
674}
675#[cfg(feature = "store")]
676impl TryFrom<super::external_locations::v1::ExternalLocation> for Object {
677 type Error = Error;
678 fn try_from(obj: super::external_locations::v1::ExternalLocation) -> Result<Self, Self::Error> {
679 let id = obj
680 .external_location_id
681 .as_ref()
682 .map(|id| ::uuid::Uuid::parse_str(id))
683 .transpose()?
684 .unwrap_or_else(::uuid::Uuid::nil);
685 let name = obj.resource_name();
686 let properties = ::serde_json::to_value(obj)?;
687 Ok(Object {
688 id,
689 name,
690 label: ObjectLabel::ExternalLocation,
691 properties: Some(properties),
692 version: 0,
693 updated_at: None,
694 created_at: chrono::Utc::now(),
695 })
696 }
697}
698#[cfg(feature = "store")]
699impl ResourceExt for super::external_locations::v1::ExternalLocation {
700 fn resource_name(&self) -> ResourceName {
701 ResourceName::new([&self.name])
702 }
703 fn resource_ref(&self) -> ResourceRef {
704 self.external_location_id
705 .as_ref()
706 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
707 .map(ResourceRef::Uuid)
708 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
709 }
710 fn resource_ident(&self) -> ResourceIdent {
711 (ObjectLabel::ExternalLocation).to_ident(self.resource_ref())
712 }
713}
714#[cfg(feature = "store")]
715impl TryFrom<Object> for super::functions::v1::Function {
716 type Error = Error;
717 fn try_from(object: Object) -> Result<Self, Self::Error> {
718 let props = object
719 .properties
720 .ok_or_else(|| Error::generic("expected properties"))?;
721 let mut res: super::functions::v1::Function = ::serde_json::from_value(props)?;
722 res.function_id = Some(object.id.hyphenated().to_string());
723 res.full_name = res.qualified_name();
724 Ok(res)
725 }
726}
727#[cfg(feature = "store")]
728impl TryFrom<super::functions::v1::Function> for Object {
729 type Error = Error;
730 fn try_from(obj: super::functions::v1::Function) -> Result<Self, Self::Error> {
731 let id = obj
732 .function_id
733 .as_ref()
734 .map(|id| ::uuid::Uuid::parse_str(id))
735 .transpose()?
736 .unwrap_or_else(::uuid::Uuid::nil);
737 let name = obj.resource_name();
738 let mut properties = ::serde_json::to_value(obj)?;
739 if let ::serde_json::Value::Object(ref mut map) = properties {
740 map.remove("full_name");
741 }
742 Ok(Object {
743 id,
744 name,
745 label: ObjectLabel::Function,
746 properties: Some(properties),
747 version: 0,
748 updated_at: None,
749 created_at: chrono::Utc::now(),
750 })
751 }
752}
753#[cfg(feature = "store")]
754impl ResourceExt for super::functions::v1::Function {
755 fn resource_name(&self) -> ResourceName {
756 ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
757 }
758 fn resource_ref(&self) -> ResourceRef {
759 self.function_id
760 .as_ref()
761 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
762 .map(ResourceRef::Uuid)
763 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
764 }
765 fn resource_ident(&self) -> ResourceIdent {
766 (ObjectLabel::Function).to_ident(self.resource_ref())
767 }
768}
769#[cfg(feature = "store")]
770impl TryFrom<Object> for super::model_versions::v1::ModelVersion {
771 type Error = Error;
772 fn try_from(object: Object) -> Result<Self, Self::Error> {
773 let props = object
774 .properties
775 .ok_or_else(|| Error::generic("expected properties"))?;
776 let mut res: super::model_versions::v1::ModelVersion = ::serde_json::from_value(props)?;
777 res.id = Some(object.id.hyphenated().to_string());
778 Ok(res)
779 }
780}
781#[cfg(feature = "store")]
782impl TryFrom<super::model_versions::v1::ModelVersion> for Object {
783 type Error = Error;
784 fn try_from(obj: super::model_versions::v1::ModelVersion) -> Result<Self, Self::Error> {
785 let id = obj
786 .id
787 .as_ref()
788 .map(|id| ::uuid::Uuid::parse_str(id))
789 .transpose()?
790 .unwrap_or_else(::uuid::Uuid::nil);
791 let name = obj.resource_name();
792 let properties = ::serde_json::to_value(obj)?;
793 Ok(Object {
794 id,
795 name,
796 label: ObjectLabel::ModelVersion,
797 properties: Some(properties),
798 version: 0,
799 updated_at: None,
800 created_at: chrono::Utc::now(),
801 })
802 }
803}
804#[cfg(feature = "store")]
805impl ResourceExt for super::model_versions::v1::ModelVersion {
806 fn resource_name(&self) -> ResourceName {
807 ResourceName::new([
808 &self.catalog_name,
809 &self.schema_name,
810 &self.model_name,
811 &self.version.to_string(),
812 ])
813 }
814 fn resource_ref(&self) -> ResourceRef {
815 self.id
816 .as_ref()
817 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
818 .map(ResourceRef::Uuid)
819 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
820 }
821 fn resource_ident(&self) -> ResourceIdent {
822 (ObjectLabel::ModelVersion).to_ident(self.resource_ref())
823 }
824}
825#[cfg(feature = "store")]
826impl TryFrom<Object> for super::policies::v1::PolicyInfo {
827 type Error = Error;
828 fn try_from(object: Object) -> Result<Self, Self::Error> {
829 let props = object
830 .properties
831 .ok_or_else(|| Error::generic("expected properties"))?;
832 let mut res: super::policies::v1::PolicyInfo = ::serde_json::from_value(props)?;
833 res.id = Some(object.id.hyphenated().to_string());
834 Ok(res)
835 }
836}
837#[cfg(feature = "store")]
838impl TryFrom<super::policies::v1::PolicyInfo> for Object {
839 type Error = Error;
840 fn try_from(obj: super::policies::v1::PolicyInfo) -> Result<Self, Self::Error> {
841 let id = obj
842 .id
843 .as_ref()
844 .map(|id| ::uuid::Uuid::parse_str(id))
845 .transpose()?
846 .unwrap_or_else(::uuid::Uuid::nil);
847 let name = obj.resource_name();
848 let properties = ::serde_json::to_value(obj)?;
849 Ok(Object {
850 id,
851 name,
852 label: ObjectLabel::PolicyInfo,
853 properties: Some(properties),
854 version: 0,
855 updated_at: None,
856 created_at: chrono::Utc::now(),
857 })
858 }
859}
860#[cfg(feature = "store")]
861impl ResourceExt for super::policies::v1::PolicyInfo {
862 fn resource_name(&self) -> ResourceName {
863 ResourceName::new([&self.name])
864 }
865 fn resource_ref(&self) -> ResourceRef {
866 self.id
867 .as_ref()
868 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
869 .map(ResourceRef::Uuid)
870 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
871 }
872 fn resource_ident(&self) -> ResourceIdent {
873 (ObjectLabel::PolicyInfo).to_ident(self.resource_ref())
874 }
875}
876#[cfg(feature = "store")]
877impl TryFrom<Object> for super::providers::v1::Provider {
878 type Error = Error;
879 fn try_from(object: Object) -> Result<Self, Self::Error> {
880 let props = object
881 .properties
882 .ok_or_else(|| Error::generic("expected properties"))?;
883 let mut res: super::providers::v1::Provider = ::serde_json::from_value(props)?;
884 res.id = Some(object.id.hyphenated().to_string());
885 Ok(res)
886 }
887}
888#[cfg(feature = "store")]
889impl TryFrom<super::providers::v1::Provider> for Object {
890 type Error = Error;
891 fn try_from(obj: super::providers::v1::Provider) -> Result<Self, Self::Error> {
892 let id = obj
893 .id
894 .as_ref()
895 .map(|id| ::uuid::Uuid::parse_str(id))
896 .transpose()?
897 .unwrap_or_else(::uuid::Uuid::nil);
898 let name = obj.resource_name();
899 let properties = ::serde_json::to_value(obj)?;
900 Ok(Object {
901 id,
902 name,
903 label: ObjectLabel::Provider,
904 properties: Some(properties),
905 version: 0,
906 updated_at: None,
907 created_at: chrono::Utc::now(),
908 })
909 }
910}
911#[cfg(feature = "store")]
912impl ResourceExt for super::providers::v1::Provider {
913 fn resource_name(&self) -> ResourceName {
914 ResourceName::new([&self.name])
915 }
916 fn resource_ref(&self) -> ResourceRef {
917 self.id
918 .as_ref()
919 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
920 .map(ResourceRef::Uuid)
921 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
922 }
923 fn resource_ident(&self) -> ResourceIdent {
924 (ObjectLabel::Provider).to_ident(self.resource_ref())
925 }
926}
927#[cfg(feature = "store")]
928impl TryFrom<Object> for super::recipients::v1::Recipient {
929 type Error = Error;
930 fn try_from(object: Object) -> Result<Self, Self::Error> {
931 let props = object
932 .properties
933 .ok_or_else(|| Error::generic("expected properties"))?;
934 let mut res: super::recipients::v1::Recipient = ::serde_json::from_value(props)?;
935 res.id = Some(object.id.hyphenated().to_string());
936 Ok(res)
937 }
938}
939#[cfg(feature = "store")]
940impl TryFrom<super::recipients::v1::Recipient> for Object {
941 type Error = Error;
942 fn try_from(obj: super::recipients::v1::Recipient) -> Result<Self, Self::Error> {
943 let id = obj
944 .id
945 .as_ref()
946 .map(|id| ::uuid::Uuid::parse_str(id))
947 .transpose()?
948 .unwrap_or_else(::uuid::Uuid::nil);
949 let name = obj.resource_name();
950 let properties = ::serde_json::to_value(obj)?;
951 Ok(Object {
952 id,
953 name,
954 label: ObjectLabel::Recipient,
955 properties: Some(properties),
956 version: 0,
957 updated_at: None,
958 created_at: chrono::Utc::now(),
959 })
960 }
961}
962#[cfg(feature = "store")]
963impl ResourceExt for super::recipients::v1::Recipient {
964 fn resource_name(&self) -> ResourceName {
965 ResourceName::new([&self.name])
966 }
967 fn resource_ref(&self) -> ResourceRef {
968 self.id
969 .as_ref()
970 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
971 .map(ResourceRef::Uuid)
972 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
973 }
974 fn resource_ident(&self) -> ResourceIdent {
975 (ObjectLabel::Recipient).to_ident(self.resource_ref())
976 }
977}
978#[cfg(feature = "store")]
979impl TryFrom<Object> for super::registered_models::v1::RegisteredModel {
980 type Error = Error;
981 fn try_from(object: Object) -> Result<Self, Self::Error> {
982 let props = object
983 .properties
984 .ok_or_else(|| Error::generic("expected properties"))?;
985 let mut res: super::registered_models::v1::RegisteredModel =
986 ::serde_json::from_value(props)?;
987 res.id = Some(object.id.hyphenated().to_string());
988 res.full_name = res.qualified_name();
989 Ok(res)
990 }
991}
992#[cfg(feature = "store")]
993impl TryFrom<super::registered_models::v1::RegisteredModel> for Object {
994 type Error = Error;
995 fn try_from(obj: super::registered_models::v1::RegisteredModel) -> Result<Self, Self::Error> {
996 let id = obj
997 .id
998 .as_ref()
999 .map(|id| ::uuid::Uuid::parse_str(id))
1000 .transpose()?
1001 .unwrap_or_else(::uuid::Uuid::nil);
1002 let name = obj.resource_name();
1003 let mut properties = ::serde_json::to_value(obj)?;
1004 if let ::serde_json::Value::Object(ref mut map) = properties {
1005 map.remove("full_name");
1006 }
1007 Ok(Object {
1008 id,
1009 name,
1010 label: ObjectLabel::RegisteredModel,
1011 properties: Some(properties),
1012 version: 0,
1013 updated_at: None,
1014 created_at: chrono::Utc::now(),
1015 })
1016 }
1017}
1018#[cfg(feature = "store")]
1019impl ResourceExt for super::registered_models::v1::RegisteredModel {
1020 fn resource_name(&self) -> ResourceName {
1021 ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
1022 }
1023 fn resource_ref(&self) -> ResourceRef {
1024 self.id
1025 .as_ref()
1026 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1027 .map(ResourceRef::Uuid)
1028 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1029 }
1030 fn resource_ident(&self) -> ResourceIdent {
1031 (ObjectLabel::RegisteredModel).to_ident(self.resource_ref())
1032 }
1033}
1034#[cfg(feature = "store")]
1035impl TryFrom<Object> for super::schemas::v1::Schema {
1036 type Error = Error;
1037 fn try_from(object: Object) -> Result<Self, Self::Error> {
1038 let props = object
1039 .properties
1040 .ok_or_else(|| Error::generic("expected properties"))?;
1041 let mut res: super::schemas::v1::Schema = ::serde_json::from_value(props)?;
1042 res.schema_id = Some(object.id.hyphenated().to_string());
1043 res.full_name = res.qualified_name();
1044 Ok(res)
1045 }
1046}
1047#[cfg(feature = "store")]
1048impl TryFrom<super::schemas::v1::Schema> for Object {
1049 type Error = Error;
1050 fn try_from(obj: super::schemas::v1::Schema) -> Result<Self, Self::Error> {
1051 let id = obj
1052 .schema_id
1053 .as_ref()
1054 .map(|id| ::uuid::Uuid::parse_str(id))
1055 .transpose()?
1056 .unwrap_or_else(::uuid::Uuid::nil);
1057 let name = obj.resource_name();
1058 let mut properties = ::serde_json::to_value(obj)?;
1059 if let ::serde_json::Value::Object(ref mut map) = properties {
1060 map.remove("full_name");
1061 }
1062 Ok(Object {
1063 id,
1064 name,
1065 label: ObjectLabel::Schema,
1066 properties: Some(properties),
1067 version: 0,
1068 updated_at: None,
1069 created_at: chrono::Utc::now(),
1070 })
1071 }
1072}
1073#[cfg(feature = "store")]
1074impl ResourceExt for super::schemas::v1::Schema {
1075 fn resource_name(&self) -> ResourceName {
1076 ResourceName::new([&self.catalog_name, &self.name])
1077 }
1078 fn resource_ref(&self) -> ResourceRef {
1079 self.schema_id
1080 .as_ref()
1081 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1082 .map(ResourceRef::Uuid)
1083 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1084 }
1085 fn resource_ident(&self) -> ResourceIdent {
1086 (ObjectLabel::Schema).to_ident(self.resource_ref())
1087 }
1088}
1089#[cfg(feature = "store")]
1090impl TryFrom<Object> for super::shares::v1::Share {
1091 type Error = Error;
1092 fn try_from(object: Object) -> Result<Self, Self::Error> {
1093 let props = object
1094 .properties
1095 .ok_or_else(|| Error::generic("expected properties"))?;
1096 let mut res: super::shares::v1::Share = ::serde_json::from_value(props)?;
1097 res.id = Some(object.id.hyphenated().to_string());
1098 Ok(res)
1099 }
1100}
1101#[cfg(feature = "store")]
1102impl TryFrom<super::shares::v1::Share> for Object {
1103 type Error = Error;
1104 fn try_from(obj: super::shares::v1::Share) -> Result<Self, Self::Error> {
1105 let id = obj
1106 .id
1107 .as_ref()
1108 .map(|id| ::uuid::Uuid::parse_str(id))
1109 .transpose()?
1110 .unwrap_or_else(::uuid::Uuid::nil);
1111 let name = obj.resource_name();
1112 let properties = ::serde_json::to_value(obj)?;
1113 Ok(Object {
1114 id,
1115 name,
1116 label: ObjectLabel::Share,
1117 properties: Some(properties),
1118 version: 0,
1119 updated_at: None,
1120 created_at: chrono::Utc::now(),
1121 })
1122 }
1123}
1124#[cfg(feature = "store")]
1125impl ResourceExt for super::shares::v1::Share {
1126 fn resource_name(&self) -> ResourceName {
1127 ResourceName::new([&self.name])
1128 }
1129 fn resource_ref(&self) -> ResourceRef {
1130 self.id
1131 .as_ref()
1132 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1133 .map(ResourceRef::Uuid)
1134 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1135 }
1136 fn resource_ident(&self) -> ResourceIdent {
1137 (ObjectLabel::Share).to_ident(self.resource_ref())
1138 }
1139}
1140#[cfg(feature = "store")]
1141impl TryFrom<Object> for super::staging_tables::v1::StagingTable {
1142 type Error = Error;
1143 fn try_from(object: Object) -> Result<Self, Self::Error> {
1144 let props = object
1145 .properties
1146 .ok_or_else(|| Error::generic("expected properties"))?;
1147 let mut res: super::staging_tables::v1::StagingTable = ::serde_json::from_value(props)?;
1148 res.id = object.id.hyphenated().to_string();
1149 Ok(res)
1150 }
1151}
1152#[cfg(feature = "store")]
1153impl TryFrom<super::staging_tables::v1::StagingTable> for Object {
1154 type Error = Error;
1155 fn try_from(obj: super::staging_tables::v1::StagingTable) -> Result<Self, Self::Error> {
1156 let id = ::uuid::Uuid::parse_str(&obj.id).unwrap_or_else(|_| ::uuid::Uuid::nil());
1157 let name = obj.resource_name();
1158 let properties = ::serde_json::to_value(obj)?;
1159 Ok(Object {
1160 id,
1161 name,
1162 label: ObjectLabel::StagingTable,
1163 properties: Some(properties),
1164 version: 0,
1165 updated_at: None,
1166 created_at: chrono::Utc::now(),
1167 })
1168 }
1169}
1170#[cfg(feature = "store")]
1171impl ResourceExt for super::staging_tables::v1::StagingTable {
1172 fn resource_name(&self) -> ResourceName {
1173 ResourceName::new([&self.name])
1174 }
1175 fn resource_ref(&self) -> ResourceRef {
1176 ::uuid::Uuid::parse_str(&self.id)
1177 .ok()
1178 .map(ResourceRef::Uuid)
1179 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1180 }
1181 fn resource_ident(&self) -> ResourceIdent {
1182 (ObjectLabel::StagingTable).to_ident(self.resource_ref())
1183 }
1184}
1185#[cfg(feature = "store")]
1186impl TryFrom<Object> for super::tables::v1::Table {
1187 type Error = Error;
1188 fn try_from(object: Object) -> Result<Self, Self::Error> {
1189 let props = object
1190 .properties
1191 .ok_or_else(|| Error::generic("expected properties"))?;
1192 let mut res: super::tables::v1::Table = ::serde_json::from_value(props)?;
1193 res.table_id = Some(object.id.hyphenated().to_string());
1194 res.full_name = res.qualified_name();
1195 Ok(res)
1196 }
1197}
1198#[cfg(feature = "store")]
1199impl TryFrom<super::tables::v1::Table> for Object {
1200 type Error = Error;
1201 fn try_from(obj: super::tables::v1::Table) -> Result<Self, Self::Error> {
1202 let id = obj
1203 .table_id
1204 .as_ref()
1205 .map(|id| ::uuid::Uuid::parse_str(id))
1206 .transpose()?
1207 .unwrap_or_else(::uuid::Uuid::nil);
1208 let name = obj.resource_name();
1209 let mut properties = ::serde_json::to_value(obj)?;
1210 if let ::serde_json::Value::Object(ref mut map) = properties {
1211 map.remove("full_name");
1212 }
1213 Ok(Object {
1214 id,
1215 name,
1216 label: ObjectLabel::Table,
1217 properties: Some(properties),
1218 version: 0,
1219 updated_at: None,
1220 created_at: chrono::Utc::now(),
1221 })
1222 }
1223}
1224#[cfg(feature = "store")]
1225impl ResourceExt for super::tables::v1::Table {
1226 fn resource_name(&self) -> ResourceName {
1227 ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
1228 }
1229 fn resource_ref(&self) -> ResourceRef {
1230 self.table_id
1231 .as_ref()
1232 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1233 .map(ResourceRef::Uuid)
1234 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1235 }
1236 fn resource_ident(&self) -> ResourceIdent {
1237 (ObjectLabel::Table).to_ident(self.resource_ref())
1238 }
1239}
1240#[cfg(feature = "store")]
1241impl TryFrom<Object> for super::tags::v1::TagPolicy {
1242 type Error = Error;
1243 fn try_from(object: Object) -> Result<Self, Self::Error> {
1244 let props = object
1245 .properties
1246 .ok_or_else(|| Error::generic("expected properties"))?;
1247 let mut res: super::tags::v1::TagPolicy = ::serde_json::from_value(props)?;
1248 res.id = Some(object.id.hyphenated().to_string());
1249 Ok(res)
1250 }
1251}
1252#[cfg(feature = "store")]
1253impl TryFrom<super::tags::v1::TagPolicy> for Object {
1254 type Error = Error;
1255 fn try_from(obj: super::tags::v1::TagPolicy) -> Result<Self, Self::Error> {
1256 let id = obj
1257 .id
1258 .as_ref()
1259 .map(|id| ::uuid::Uuid::parse_str(id))
1260 .transpose()?
1261 .unwrap_or_else(::uuid::Uuid::nil);
1262 let name = obj.resource_name();
1263 let properties = ::serde_json::to_value(obj)?;
1264 Ok(Object {
1265 id,
1266 name,
1267 label: ObjectLabel::TagPolicy,
1268 properties: Some(properties),
1269 version: 0,
1270 updated_at: None,
1271 created_at: chrono::Utc::now(),
1272 })
1273 }
1274}
1275#[cfg(feature = "store")]
1276impl ResourceExt for super::tags::v1::TagPolicy {
1277 fn resource_name(&self) -> ResourceName {
1278 ResourceName::new([&self.tag_key])
1279 }
1280 fn resource_ref(&self) -> ResourceRef {
1281 self.id
1282 .as_ref()
1283 .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1284 .map(ResourceRef::Uuid)
1285 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1286 }
1287 fn resource_ident(&self) -> ResourceIdent {
1288 (ObjectLabel::TagPolicy).to_ident(self.resource_ref())
1289 }
1290}
1291#[cfg(feature = "store")]
1292impl TryFrom<Object> for super::volumes::v1::Volume {
1293 type Error = Error;
1294 fn try_from(object: Object) -> Result<Self, Self::Error> {
1295 let props = object
1296 .properties
1297 .ok_or_else(|| Error::generic("expected properties"))?;
1298 let mut res: super::volumes::v1::Volume = ::serde_json::from_value(props)?;
1299 res.volume_id = object.id.hyphenated().to_string();
1300 res.full_name = res.qualified_name();
1301 Ok(res)
1302 }
1303}
1304#[cfg(feature = "store")]
1305impl TryFrom<super::volumes::v1::Volume> for Object {
1306 type Error = Error;
1307 fn try_from(obj: super::volumes::v1::Volume) -> Result<Self, Self::Error> {
1308 let id = ::uuid::Uuid::parse_str(&obj.volume_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
1309 let name = obj.resource_name();
1310 let mut properties = ::serde_json::to_value(obj)?;
1311 if let ::serde_json::Value::Object(ref mut map) = properties {
1312 map.remove("full_name");
1313 }
1314 Ok(Object {
1315 id,
1316 name,
1317 label: ObjectLabel::Volume,
1318 properties: Some(properties),
1319 version: 0,
1320 updated_at: None,
1321 created_at: chrono::Utc::now(),
1322 })
1323 }
1324}
1325#[cfg(feature = "store")]
1326impl ResourceExt for super::volumes::v1::Volume {
1327 fn resource_name(&self) -> ResourceName {
1328 ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
1329 }
1330 fn resource_ref(&self) -> ResourceRef {
1331 ::uuid::Uuid::parse_str(&self.volume_id)
1332 .ok()
1333 .map(ResourceRef::Uuid)
1334 .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1335 }
1336 fn resource_ident(&self) -> ResourceIdent {
1337 (ObjectLabel::Volume).to_ident(self.resource_ref())
1338 }
1339}
1340impl super::agents::v0alpha1::Agent {
1341 pub fn qualified_name(&self) -> String {
1343 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1344 }
1345}
1346impl super::agent_skills::v0alpha1::AgentSkill {
1347 pub fn qualified_name(&self) -> String {
1349 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1350 }
1351}
1352impl super::catalogs::v1::Catalog {
1353 pub fn qualified_name(&self) -> String {
1355 self.name.clone()
1356 }
1357}
1358impl super::tables::v1::Column {
1359 pub fn qualified_name(&self) -> String {
1361 self.name.clone()
1362 }
1363}
1364impl super::credentials::v1::Credential {
1365 pub fn qualified_name(&self) -> String {
1367 self.name.clone()
1368 }
1369}
1370impl super::external_locations::v1::ExternalLocation {
1371 pub fn qualified_name(&self) -> String {
1373 self.name.clone()
1374 }
1375}
1376impl super::functions::v1::Function {
1377 pub fn qualified_name(&self) -> String {
1379 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1380 }
1381}
1382impl super::model_versions::v1::ModelVersion {
1383 pub fn qualified_name(&self) -> String {
1385 format!(
1386 "{}.{}.{}.{}",
1387 self.catalog_name, self.schema_name, self.model_name, self.version
1388 )
1389 }
1390}
1391impl super::policies::v1::PolicyInfo {
1392 pub fn qualified_name(&self) -> String {
1394 self.name.clone()
1395 }
1396}
1397impl super::providers::v1::Provider {
1398 pub fn qualified_name(&self) -> String {
1400 self.name.clone()
1401 }
1402}
1403impl super::recipients::v1::Recipient {
1404 pub fn qualified_name(&self) -> String {
1406 self.name.clone()
1407 }
1408}
1409impl super::registered_models::v1::RegisteredModel {
1410 pub fn qualified_name(&self) -> String {
1412 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1413 }
1414}
1415impl super::schemas::v1::Schema {
1416 pub fn qualified_name(&self) -> String {
1418 format!("{}.{}", self.catalog_name, self.name)
1419 }
1420}
1421impl super::shares::v1::Share {
1422 pub fn qualified_name(&self) -> String {
1424 self.name.clone()
1425 }
1426}
1427impl super::staging_tables::v1::StagingTable {
1428 pub fn qualified_name(&self) -> String {
1430 self.name.clone()
1431 }
1432}
1433impl super::tables::v1::Table {
1434 pub fn qualified_name(&self) -> String {
1436 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1437 }
1438}
1439impl super::tags::v1::TagPolicy {
1440 pub fn qualified_name(&self) -> String {
1442 self.tag_key.clone()
1443 }
1444}
1445impl super::volumes::v1::Volume {
1446 pub fn qualified_name(&self) -> String {
1448 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1449 }
1450}
1451#[cfg(feature = "store")]
1452impl ::olai_store::Label for ObjectLabel {
1453 fn as_str(&self) -> &str {
1454 self.as_ref()
1455 }
1456}
1457#[cfg(feature = "store")]
1458pub static RESOURCE_DESCRIPTORS: &[::olai_store::ResourceTypeDescriptor<ObjectLabel>] = &[
1465 ::olai_store::ResourceTypeDescriptor {
1466 label: ObjectLabel::Agent,
1467 fields: &[
1468 ::olai_store::ResourceFieldDescriptor {
1469 name: "name",
1470 role: ::olai_store::FieldRole::Data,
1471 },
1472 ::olai_store::ResourceFieldDescriptor {
1473 name: "catalog_name",
1474 role: ::olai_store::FieldRole::Data,
1475 },
1476 ::olai_store::ResourceFieldDescriptor {
1477 name: "schema_name",
1478 role: ::olai_store::FieldRole::Data,
1479 },
1480 ::olai_store::ResourceFieldDescriptor {
1481 name: "full_name",
1482 role: ::olai_store::FieldRole::Data,
1483 },
1484 ::olai_store::ResourceFieldDescriptor {
1485 name: "agent_id",
1486 role: ::olai_store::FieldRole::Identifier,
1487 },
1488 ::olai_store::ResourceFieldDescriptor {
1489 name: "invocation_protocol",
1490 role: ::olai_store::FieldRole::Data,
1491 },
1492 ::olai_store::ResourceFieldDescriptor {
1493 name: "endpoint",
1494 role: ::olai_store::FieldRole::Data,
1495 },
1496 ::olai_store::ResourceFieldDescriptor {
1497 name: "description",
1498 role: ::olai_store::FieldRole::Data,
1499 },
1500 ::olai_store::ResourceFieldDescriptor {
1501 name: "capabilities",
1502 role: ::olai_store::FieldRole::Data,
1503 },
1504 ::olai_store::ResourceFieldDescriptor {
1505 name: "input_schema",
1506 role: ::olai_store::FieldRole::Data,
1507 },
1508 ::olai_store::ResourceFieldDescriptor {
1509 name: "owner",
1510 role: ::olai_store::FieldRole::Data,
1511 },
1512 ::olai_store::ResourceFieldDescriptor {
1513 name: "comment",
1514 role: ::olai_store::FieldRole::Data,
1515 },
1516 ::olai_store::ResourceFieldDescriptor {
1517 name: "created_at",
1518 role: ::olai_store::FieldRole::Managed,
1519 },
1520 ::olai_store::ResourceFieldDescriptor {
1521 name: "created_by",
1522 role: ::olai_store::FieldRole::Managed,
1523 },
1524 ::olai_store::ResourceFieldDescriptor {
1525 name: "updated_at",
1526 role: ::olai_store::FieldRole::Managed,
1527 },
1528 ::olai_store::ResourceFieldDescriptor {
1529 name: "updated_by",
1530 role: ::olai_store::FieldRole::Managed,
1531 },
1532 ::olai_store::ResourceFieldDescriptor {
1533 name: "metastore_id",
1534 role: ::olai_store::FieldRole::Data,
1535 },
1536 ],
1537 path_names: &["catalog_name", "schema_name", "name"],
1538 parent_label: Some(ObjectLabel::Catalog),
1539 },
1540 ::olai_store::ResourceTypeDescriptor {
1541 label: ObjectLabel::AgentSkill,
1542 fields: &[
1543 ::olai_store::ResourceFieldDescriptor {
1544 name: "name",
1545 role: ::olai_store::FieldRole::Data,
1546 },
1547 ::olai_store::ResourceFieldDescriptor {
1548 name: "catalog_name",
1549 role: ::olai_store::FieldRole::Data,
1550 },
1551 ::olai_store::ResourceFieldDescriptor {
1552 name: "schema_name",
1553 role: ::olai_store::FieldRole::Data,
1554 },
1555 ::olai_store::ResourceFieldDescriptor {
1556 name: "full_name",
1557 role: ::olai_store::FieldRole::Data,
1558 },
1559 ::olai_store::ResourceFieldDescriptor {
1560 name: "storage_location",
1561 role: ::olai_store::FieldRole::Data,
1562 },
1563 ::olai_store::ResourceFieldDescriptor {
1564 name: "agent_skill_id",
1565 role: ::olai_store::FieldRole::Identifier,
1566 },
1567 ::olai_store::ResourceFieldDescriptor {
1568 name: "agent_skill_type",
1569 role: ::olai_store::FieldRole::Data,
1570 },
1571 ::olai_store::ResourceFieldDescriptor {
1572 name: "description",
1573 role: ::olai_store::FieldRole::Data,
1574 },
1575 ::olai_store::ResourceFieldDescriptor {
1576 name: "license",
1577 role: ::olai_store::FieldRole::Data,
1578 },
1579 ::olai_store::ResourceFieldDescriptor {
1580 name: "allowed_tools",
1581 role: ::olai_store::FieldRole::Data,
1582 },
1583 ::olai_store::ResourceFieldDescriptor {
1584 name: "metadata",
1585 role: ::olai_store::FieldRole::Data,
1586 },
1587 ::olai_store::ResourceFieldDescriptor {
1588 name: "owner",
1589 role: ::olai_store::FieldRole::Data,
1590 },
1591 ::olai_store::ResourceFieldDescriptor {
1592 name: "comment",
1593 role: ::olai_store::FieldRole::Data,
1594 },
1595 ::olai_store::ResourceFieldDescriptor {
1596 name: "created_at",
1597 role: ::olai_store::FieldRole::Managed,
1598 },
1599 ::olai_store::ResourceFieldDescriptor {
1600 name: "created_by",
1601 role: ::olai_store::FieldRole::Managed,
1602 },
1603 ::olai_store::ResourceFieldDescriptor {
1604 name: "updated_at",
1605 role: ::olai_store::FieldRole::Managed,
1606 },
1607 ::olai_store::ResourceFieldDescriptor {
1608 name: "updated_by",
1609 role: ::olai_store::FieldRole::Managed,
1610 },
1611 ::olai_store::ResourceFieldDescriptor {
1612 name: "metastore_id",
1613 role: ::olai_store::FieldRole::Data,
1614 },
1615 ],
1616 path_names: &["catalog_name", "schema_name", "name"],
1617 parent_label: Some(ObjectLabel::Catalog),
1618 },
1619 ::olai_store::ResourceTypeDescriptor {
1620 label: ObjectLabel::Catalog,
1621 fields: &[
1622 ::olai_store::ResourceFieldDescriptor {
1623 name: "name",
1624 role: ::olai_store::FieldRole::Data,
1625 },
1626 ::olai_store::ResourceFieldDescriptor {
1627 name: "id",
1628 role: ::olai_store::FieldRole::Identifier,
1629 },
1630 ::olai_store::ResourceFieldDescriptor {
1631 name: "owner",
1632 role: ::olai_store::FieldRole::Data,
1633 },
1634 ::olai_store::ResourceFieldDescriptor {
1635 name: "comment",
1636 role: ::olai_store::FieldRole::Data,
1637 },
1638 ::olai_store::ResourceFieldDescriptor {
1639 name: "properties",
1640 role: ::olai_store::FieldRole::Data,
1641 },
1642 ::olai_store::ResourceFieldDescriptor {
1643 name: "storage_root",
1644 role: ::olai_store::FieldRole::Data,
1645 },
1646 ::olai_store::ResourceFieldDescriptor {
1647 name: "provider_name",
1648 role: ::olai_store::FieldRole::Data,
1649 },
1650 ::olai_store::ResourceFieldDescriptor {
1651 name: "share_name",
1652 role: ::olai_store::FieldRole::Data,
1653 },
1654 ::olai_store::ResourceFieldDescriptor {
1655 name: "catalog_type",
1656 role: ::olai_store::FieldRole::Data,
1657 },
1658 ::olai_store::ResourceFieldDescriptor {
1659 name: "storage_location",
1660 role: ::olai_store::FieldRole::Data,
1661 },
1662 ::olai_store::ResourceFieldDescriptor {
1663 name: "created_at",
1664 role: ::olai_store::FieldRole::Managed,
1665 },
1666 ::olai_store::ResourceFieldDescriptor {
1667 name: "created_by",
1668 role: ::olai_store::FieldRole::Managed,
1669 },
1670 ::olai_store::ResourceFieldDescriptor {
1671 name: "updated_at",
1672 role: ::olai_store::FieldRole::Managed,
1673 },
1674 ::olai_store::ResourceFieldDescriptor {
1675 name: "updated_by",
1676 role: ::olai_store::FieldRole::Managed,
1677 },
1678 ::olai_store::ResourceFieldDescriptor {
1679 name: "browse_only",
1680 role: ::olai_store::FieldRole::Data,
1681 },
1682 ],
1683 path_names: &["name"],
1684 parent_label: None,
1685 },
1686 ::olai_store::ResourceTypeDescriptor {
1687 label: ObjectLabel::Column,
1688 fields: &[
1689 ::olai_store::ResourceFieldDescriptor {
1690 name: "name",
1691 role: ::olai_store::FieldRole::Data,
1692 },
1693 ::olai_store::ResourceFieldDescriptor {
1694 name: "type_text",
1695 role: ::olai_store::FieldRole::Data,
1696 },
1697 ::olai_store::ResourceFieldDescriptor {
1698 name: "type_json",
1699 role: ::olai_store::FieldRole::Data,
1700 },
1701 ::olai_store::ResourceFieldDescriptor {
1702 name: "position",
1703 role: ::olai_store::FieldRole::Data,
1704 },
1705 ::olai_store::ResourceFieldDescriptor {
1706 name: "type_name",
1707 role: ::olai_store::FieldRole::Data,
1708 },
1709 ::olai_store::ResourceFieldDescriptor {
1710 name: "type_precision",
1711 role: ::olai_store::FieldRole::Data,
1712 },
1713 ::olai_store::ResourceFieldDescriptor {
1714 name: "type_scale",
1715 role: ::olai_store::FieldRole::Data,
1716 },
1717 ::olai_store::ResourceFieldDescriptor {
1718 name: "type_interval_type",
1719 role: ::olai_store::FieldRole::Data,
1720 },
1721 ::olai_store::ResourceFieldDescriptor {
1722 name: "comment",
1723 role: ::olai_store::FieldRole::Data,
1724 },
1725 ::olai_store::ResourceFieldDescriptor {
1726 name: "nullable",
1727 role: ::olai_store::FieldRole::Data,
1728 },
1729 ::olai_store::ResourceFieldDescriptor {
1730 name: "partition_index",
1731 role: ::olai_store::FieldRole::Data,
1732 },
1733 ::olai_store::ResourceFieldDescriptor {
1734 name: "column_id",
1735 role: ::olai_store::FieldRole::Identifier,
1736 },
1737 ],
1738 path_names: &["name"],
1739 parent_label: None,
1740 },
1741 ::olai_store::ResourceTypeDescriptor {
1742 label: ObjectLabel::Credential,
1743 fields: &[
1744 ::olai_store::ResourceFieldDescriptor {
1745 name: "name",
1746 role: ::olai_store::FieldRole::Data,
1747 },
1748 ::olai_store::ResourceFieldDescriptor {
1749 name: "id",
1750 role: ::olai_store::FieldRole::Identifier,
1751 },
1752 ::olai_store::ResourceFieldDescriptor {
1753 name: "purpose",
1754 role: ::olai_store::FieldRole::Data,
1755 },
1756 ::olai_store::ResourceFieldDescriptor {
1757 name: "read_only",
1758 role: ::olai_store::FieldRole::Data,
1759 },
1760 ::olai_store::ResourceFieldDescriptor {
1761 name: "comment",
1762 role: ::olai_store::FieldRole::Data,
1763 },
1764 ::olai_store::ResourceFieldDescriptor {
1765 name: "owner",
1766 role: ::olai_store::FieldRole::Data,
1767 },
1768 ::olai_store::ResourceFieldDescriptor {
1769 name: "created_at",
1770 role: ::olai_store::FieldRole::Managed,
1771 },
1772 ::olai_store::ResourceFieldDescriptor {
1773 name: "created_by",
1774 role: ::olai_store::FieldRole::Managed,
1775 },
1776 ::olai_store::ResourceFieldDescriptor {
1777 name: "updated_at",
1778 role: ::olai_store::FieldRole::Managed,
1779 },
1780 ::olai_store::ResourceFieldDescriptor {
1781 name: "updated_by",
1782 role: ::olai_store::FieldRole::Managed,
1783 },
1784 ::olai_store::ResourceFieldDescriptor {
1785 name: "used_for_managed_storage",
1786 role: ::olai_store::FieldRole::Data,
1787 },
1788 ::olai_store::ResourceFieldDescriptor {
1789 name: "full_name",
1790 role: ::olai_store::FieldRole::Data,
1791 },
1792 ::olai_store::ResourceFieldDescriptor {
1793 name: "azure_service_principal",
1794 role: ::olai_store::FieldRole::Sensitive,
1795 },
1796 ::olai_store::ResourceFieldDescriptor {
1797 name: "azure_managed_identity",
1798 role: ::olai_store::FieldRole::Sensitive,
1799 },
1800 ::olai_store::ResourceFieldDescriptor {
1801 name: "azure_storage_key",
1802 role: ::olai_store::FieldRole::Sensitive,
1803 },
1804 ::olai_store::ResourceFieldDescriptor {
1805 name: "aws_iam_role",
1806 role: ::olai_store::FieldRole::Sensitive,
1807 },
1808 ::olai_store::ResourceFieldDescriptor {
1809 name: "databricks_gcp_service_account",
1810 role: ::olai_store::FieldRole::Sensitive,
1811 },
1812 ],
1813 path_names: &["name"],
1814 parent_label: None,
1815 },
1816 ::olai_store::ResourceTypeDescriptor {
1817 label: ObjectLabel::ExternalLocation,
1818 fields: &[
1819 ::olai_store::ResourceFieldDescriptor {
1820 name: "name",
1821 role: ::olai_store::FieldRole::Data,
1822 },
1823 ::olai_store::ResourceFieldDescriptor {
1824 name: "url",
1825 role: ::olai_store::FieldRole::Data,
1826 },
1827 ::olai_store::ResourceFieldDescriptor {
1828 name: "credential_name",
1829 role: ::olai_store::FieldRole::Data,
1830 },
1831 ::olai_store::ResourceFieldDescriptor {
1832 name: "read_only",
1833 role: ::olai_store::FieldRole::Data,
1834 },
1835 ::olai_store::ResourceFieldDescriptor {
1836 name: "comment",
1837 role: ::olai_store::FieldRole::Data,
1838 },
1839 ::olai_store::ResourceFieldDescriptor {
1840 name: "owner",
1841 role: ::olai_store::FieldRole::Data,
1842 },
1843 ::olai_store::ResourceFieldDescriptor {
1844 name: "credential_id",
1845 role: ::olai_store::FieldRole::Data,
1846 },
1847 ::olai_store::ResourceFieldDescriptor {
1848 name: "created_at",
1849 role: ::olai_store::FieldRole::Managed,
1850 },
1851 ::olai_store::ResourceFieldDescriptor {
1852 name: "created_by",
1853 role: ::olai_store::FieldRole::Managed,
1854 },
1855 ::olai_store::ResourceFieldDescriptor {
1856 name: "updated_at",
1857 role: ::olai_store::FieldRole::Managed,
1858 },
1859 ::olai_store::ResourceFieldDescriptor {
1860 name: "updated_by",
1861 role: ::olai_store::FieldRole::Managed,
1862 },
1863 ::olai_store::ResourceFieldDescriptor {
1864 name: "browse_only",
1865 role: ::olai_store::FieldRole::Data,
1866 },
1867 ::olai_store::ResourceFieldDescriptor {
1868 name: "external_location_id",
1869 role: ::olai_store::FieldRole::Identifier,
1870 },
1871 ],
1872 path_names: &["name"],
1873 parent_label: None,
1874 },
1875 ::olai_store::ResourceTypeDescriptor {
1876 label: ObjectLabel::Function,
1877 fields: &[
1878 ::olai_store::ResourceFieldDescriptor {
1879 name: "name",
1880 role: ::olai_store::FieldRole::Data,
1881 },
1882 ::olai_store::ResourceFieldDescriptor {
1883 name: "catalog_name",
1884 role: ::olai_store::FieldRole::Data,
1885 },
1886 ::olai_store::ResourceFieldDescriptor {
1887 name: "schema_name",
1888 role: ::olai_store::FieldRole::Data,
1889 },
1890 ::olai_store::ResourceFieldDescriptor {
1891 name: "full_name",
1892 role: ::olai_store::FieldRole::Data,
1893 },
1894 ::olai_store::ResourceFieldDescriptor {
1895 name: "data_type",
1896 role: ::olai_store::FieldRole::Data,
1897 },
1898 ::olai_store::ResourceFieldDescriptor {
1899 name: "full_data_type",
1900 role: ::olai_store::FieldRole::Data,
1901 },
1902 ::olai_store::ResourceFieldDescriptor {
1903 name: "input_params",
1904 role: ::olai_store::FieldRole::Data,
1905 },
1906 ::olai_store::ResourceFieldDescriptor {
1907 name: "return_params",
1908 role: ::olai_store::FieldRole::Data,
1909 },
1910 ::olai_store::ResourceFieldDescriptor {
1911 name: "routine_body_language",
1912 role: ::olai_store::FieldRole::Data,
1913 },
1914 ::olai_store::ResourceFieldDescriptor {
1915 name: "routine_definition",
1916 role: ::olai_store::FieldRole::Data,
1917 },
1918 ::olai_store::ResourceFieldDescriptor {
1919 name: "routine_dependencies",
1920 role: ::olai_store::FieldRole::Data,
1921 },
1922 ::olai_store::ResourceFieldDescriptor {
1923 name: "parameter_style",
1924 role: ::olai_store::FieldRole::Data,
1925 },
1926 ::olai_store::ResourceFieldDescriptor {
1927 name: "is_deterministic",
1928 role: ::olai_store::FieldRole::Data,
1929 },
1930 ::olai_store::ResourceFieldDescriptor {
1931 name: "sql_data_access",
1932 role: ::olai_store::FieldRole::Data,
1933 },
1934 ::olai_store::ResourceFieldDescriptor {
1935 name: "is_null_call",
1936 role: ::olai_store::FieldRole::Data,
1937 },
1938 ::olai_store::ResourceFieldDescriptor {
1939 name: "security_type",
1940 role: ::olai_store::FieldRole::Data,
1941 },
1942 ::olai_store::ResourceFieldDescriptor {
1943 name: "specific_name",
1944 role: ::olai_store::FieldRole::Data,
1945 },
1946 ::olai_store::ResourceFieldDescriptor {
1947 name: "routine_body",
1948 role: ::olai_store::FieldRole::Data,
1949 },
1950 ::olai_store::ResourceFieldDescriptor {
1951 name: "comment",
1952 role: ::olai_store::FieldRole::Data,
1953 },
1954 ::olai_store::ResourceFieldDescriptor {
1955 name: "properties",
1956 role: ::olai_store::FieldRole::Data,
1957 },
1958 ::olai_store::ResourceFieldDescriptor {
1959 name: "owner",
1960 role: ::olai_store::FieldRole::Data,
1961 },
1962 ::olai_store::ResourceFieldDescriptor {
1963 name: "function_id",
1964 role: ::olai_store::FieldRole::Identifier,
1965 },
1966 ::olai_store::ResourceFieldDescriptor {
1967 name: "created_at",
1968 role: ::olai_store::FieldRole::Managed,
1969 },
1970 ::olai_store::ResourceFieldDescriptor {
1971 name: "created_by",
1972 role: ::olai_store::FieldRole::Managed,
1973 },
1974 ::olai_store::ResourceFieldDescriptor {
1975 name: "updated_at",
1976 role: ::olai_store::FieldRole::Managed,
1977 },
1978 ::olai_store::ResourceFieldDescriptor {
1979 name: "updated_by",
1980 role: ::olai_store::FieldRole::Managed,
1981 },
1982 ],
1983 path_names: &["catalog_name", "schema_name", "name"],
1984 parent_label: Some(ObjectLabel::Catalog),
1985 },
1986 ::olai_store::ResourceTypeDescriptor {
1987 label: ObjectLabel::ModelVersion,
1988 fields: &[
1989 ::olai_store::ResourceFieldDescriptor {
1990 name: "model_name",
1991 role: ::olai_store::FieldRole::Data,
1992 },
1993 ::olai_store::ResourceFieldDescriptor {
1994 name: "catalog_name",
1995 role: ::olai_store::FieldRole::Data,
1996 },
1997 ::olai_store::ResourceFieldDescriptor {
1998 name: "schema_name",
1999 role: ::olai_store::FieldRole::Data,
2000 },
2001 ::olai_store::ResourceFieldDescriptor {
2002 name: "version",
2003 role: ::olai_store::FieldRole::Data,
2004 },
2005 ::olai_store::ResourceFieldDescriptor {
2006 name: "source",
2007 role: ::olai_store::FieldRole::Data,
2008 },
2009 ::olai_store::ResourceFieldDescriptor {
2010 name: "run_id",
2011 role: ::olai_store::FieldRole::Data,
2012 },
2013 ::olai_store::ResourceFieldDescriptor {
2014 name: "status",
2015 role: ::olai_store::FieldRole::Data,
2016 },
2017 ::olai_store::ResourceFieldDescriptor {
2018 name: "storage_location",
2019 role: ::olai_store::FieldRole::Data,
2020 },
2021 ::olai_store::ResourceFieldDescriptor {
2022 name: "comment",
2023 role: ::olai_store::FieldRole::Data,
2024 },
2025 ::olai_store::ResourceFieldDescriptor {
2026 name: "id",
2027 role: ::olai_store::FieldRole::Identifier,
2028 },
2029 ::olai_store::ResourceFieldDescriptor {
2030 name: "created_at",
2031 role: ::olai_store::FieldRole::Managed,
2032 },
2033 ::olai_store::ResourceFieldDescriptor {
2034 name: "created_by",
2035 role: ::olai_store::FieldRole::Managed,
2036 },
2037 ::olai_store::ResourceFieldDescriptor {
2038 name: "updated_at",
2039 role: ::olai_store::FieldRole::Managed,
2040 },
2041 ::olai_store::ResourceFieldDescriptor {
2042 name: "updated_by",
2043 role: ::olai_store::FieldRole::Managed,
2044 },
2045 ::olai_store::ResourceFieldDescriptor {
2046 name: "metastore_id",
2047 role: ::olai_store::FieldRole::Data,
2048 },
2049 ::olai_store::ResourceFieldDescriptor {
2050 name: "browse_only",
2051 role: ::olai_store::FieldRole::Data,
2052 },
2053 ],
2054 path_names: &["catalog_name", "schema_name", "model_name", "version"],
2055 parent_label: None,
2056 },
2057 ::olai_store::ResourceTypeDescriptor {
2058 label: ObjectLabel::PolicyInfo,
2059 fields: &[
2060 ::olai_store::ResourceFieldDescriptor {
2061 name: "name",
2062 role: ::olai_store::FieldRole::Data,
2063 },
2064 ::olai_store::ResourceFieldDescriptor {
2065 name: "id",
2066 role: ::olai_store::FieldRole::Identifier,
2067 },
2068 ::olai_store::ResourceFieldDescriptor {
2069 name: "on_securable_type",
2070 role: ::olai_store::FieldRole::Data,
2071 },
2072 ::olai_store::ResourceFieldDescriptor {
2073 name: "on_securable_fullname",
2074 role: ::olai_store::FieldRole::Data,
2075 },
2076 ::olai_store::ResourceFieldDescriptor {
2077 name: "policy_type",
2078 role: ::olai_store::FieldRole::Data,
2079 },
2080 ::olai_store::ResourceFieldDescriptor {
2081 name: "to_principals",
2082 role: ::olai_store::FieldRole::Data,
2083 },
2084 ::olai_store::ResourceFieldDescriptor {
2085 name: "except_principals",
2086 role: ::olai_store::FieldRole::Data,
2087 },
2088 ::olai_store::ResourceFieldDescriptor {
2089 name: "when_condition",
2090 role: ::olai_store::FieldRole::Data,
2091 },
2092 ::olai_store::ResourceFieldDescriptor {
2093 name: "match_columns",
2094 role: ::olai_store::FieldRole::Data,
2095 },
2096 ::olai_store::ResourceFieldDescriptor {
2097 name: "comment",
2098 role: ::olai_store::FieldRole::Data,
2099 },
2100 ::olai_store::ResourceFieldDescriptor {
2101 name: "created_at",
2102 role: ::olai_store::FieldRole::Managed,
2103 },
2104 ::olai_store::ResourceFieldDescriptor {
2105 name: "updated_at",
2106 role: ::olai_store::FieldRole::Managed,
2107 },
2108 ::olai_store::ResourceFieldDescriptor {
2109 name: "function",
2110 role: ::olai_store::FieldRole::Data,
2111 },
2112 ],
2113 path_names: &["name"],
2114 parent_label: None,
2115 },
2116 ::olai_store::ResourceTypeDescriptor {
2117 label: ObjectLabel::Provider,
2118 fields: &[
2119 ::olai_store::ResourceFieldDescriptor {
2120 name: "id",
2121 role: ::olai_store::FieldRole::Identifier,
2122 },
2123 ::olai_store::ResourceFieldDescriptor {
2124 name: "name",
2125 role: ::olai_store::FieldRole::Data,
2126 },
2127 ::olai_store::ResourceFieldDescriptor {
2128 name: "authentication_type",
2129 role: ::olai_store::FieldRole::Data,
2130 },
2131 ::olai_store::ResourceFieldDescriptor {
2132 name: "owner",
2133 role: ::olai_store::FieldRole::Data,
2134 },
2135 ::olai_store::ResourceFieldDescriptor {
2136 name: "comment",
2137 role: ::olai_store::FieldRole::Data,
2138 },
2139 ::olai_store::ResourceFieldDescriptor {
2140 name: "recipient_profile_str",
2141 role: ::olai_store::FieldRole::Data,
2142 },
2143 ::olai_store::ResourceFieldDescriptor {
2144 name: "properties",
2145 role: ::olai_store::FieldRole::Data,
2146 },
2147 ::olai_store::ResourceFieldDescriptor {
2148 name: "created_at",
2149 role: ::olai_store::FieldRole::Managed,
2150 },
2151 ::olai_store::ResourceFieldDescriptor {
2152 name: "created_by",
2153 role: ::olai_store::FieldRole::Managed,
2154 },
2155 ::olai_store::ResourceFieldDescriptor {
2156 name: "updated_at",
2157 role: ::olai_store::FieldRole::Managed,
2158 },
2159 ::olai_store::ResourceFieldDescriptor {
2160 name: "updated_by",
2161 role: ::olai_store::FieldRole::Managed,
2162 },
2163 ],
2164 path_names: &["name"],
2165 parent_label: None,
2166 },
2167 ::olai_store::ResourceTypeDescriptor {
2168 label: ObjectLabel::Recipient,
2169 fields: &[
2170 ::olai_store::ResourceFieldDescriptor {
2171 name: "id",
2172 role: ::olai_store::FieldRole::Identifier,
2173 },
2174 ::olai_store::ResourceFieldDescriptor {
2175 name: "name",
2176 role: ::olai_store::FieldRole::Data,
2177 },
2178 ::olai_store::ResourceFieldDescriptor {
2179 name: "authentication_type",
2180 role: ::olai_store::FieldRole::Data,
2181 },
2182 ::olai_store::ResourceFieldDescriptor {
2183 name: "owner",
2184 role: ::olai_store::FieldRole::Data,
2185 },
2186 ::olai_store::ResourceFieldDescriptor {
2187 name: "comment",
2188 role: ::olai_store::FieldRole::Data,
2189 },
2190 ::olai_store::ResourceFieldDescriptor {
2191 name: "properties",
2192 role: ::olai_store::FieldRole::Data,
2193 },
2194 ::olai_store::ResourceFieldDescriptor {
2195 name: "created_at",
2196 role: ::olai_store::FieldRole::Managed,
2197 },
2198 ::olai_store::ResourceFieldDescriptor {
2199 name: "created_by",
2200 role: ::olai_store::FieldRole::Managed,
2201 },
2202 ::olai_store::ResourceFieldDescriptor {
2203 name: "tokens",
2204 role: ::olai_store::FieldRole::Data,
2205 },
2206 ::olai_store::ResourceFieldDescriptor {
2207 name: "updated_at",
2208 role: ::olai_store::FieldRole::Managed,
2209 },
2210 ::olai_store::ResourceFieldDescriptor {
2211 name: "updated_by",
2212 role: ::olai_store::FieldRole::Managed,
2213 },
2214 ],
2215 path_names: &["name"],
2216 parent_label: None,
2217 },
2218 ::olai_store::ResourceTypeDescriptor {
2219 label: ObjectLabel::RegisteredModel,
2220 fields: &[
2221 ::olai_store::ResourceFieldDescriptor {
2222 name: "name",
2223 role: ::olai_store::FieldRole::Data,
2224 },
2225 ::olai_store::ResourceFieldDescriptor {
2226 name: "catalog_name",
2227 role: ::olai_store::FieldRole::Data,
2228 },
2229 ::olai_store::ResourceFieldDescriptor {
2230 name: "schema_name",
2231 role: ::olai_store::FieldRole::Data,
2232 },
2233 ::olai_store::ResourceFieldDescriptor {
2234 name: "full_name",
2235 role: ::olai_store::FieldRole::Data,
2236 },
2237 ::olai_store::ResourceFieldDescriptor {
2238 name: "storage_location",
2239 role: ::olai_store::FieldRole::Data,
2240 },
2241 ::olai_store::ResourceFieldDescriptor {
2242 name: "owner",
2243 role: ::olai_store::FieldRole::Data,
2244 },
2245 ::olai_store::ResourceFieldDescriptor {
2246 name: "comment",
2247 role: ::olai_store::FieldRole::Data,
2248 },
2249 ::olai_store::ResourceFieldDescriptor {
2250 name: "id",
2251 role: ::olai_store::FieldRole::Identifier,
2252 },
2253 ::olai_store::ResourceFieldDescriptor {
2254 name: "created_at",
2255 role: ::olai_store::FieldRole::Managed,
2256 },
2257 ::olai_store::ResourceFieldDescriptor {
2258 name: "created_by",
2259 role: ::olai_store::FieldRole::Managed,
2260 },
2261 ::olai_store::ResourceFieldDescriptor {
2262 name: "updated_at",
2263 role: ::olai_store::FieldRole::Managed,
2264 },
2265 ::olai_store::ResourceFieldDescriptor {
2266 name: "updated_by",
2267 role: ::olai_store::FieldRole::Managed,
2268 },
2269 ::olai_store::ResourceFieldDescriptor {
2270 name: "metastore_id",
2271 role: ::olai_store::FieldRole::Data,
2272 },
2273 ::olai_store::ResourceFieldDescriptor {
2274 name: "browse_only",
2275 role: ::olai_store::FieldRole::Data,
2276 },
2277 ],
2278 path_names: &["catalog_name", "schema_name", "name"],
2279 parent_label: Some(ObjectLabel::Catalog),
2280 },
2281 ::olai_store::ResourceTypeDescriptor {
2282 label: ObjectLabel::Schema,
2283 fields: &[
2284 ::olai_store::ResourceFieldDescriptor {
2285 name: "name",
2286 role: ::olai_store::FieldRole::Data,
2287 },
2288 ::olai_store::ResourceFieldDescriptor {
2289 name: "catalog_name",
2290 role: ::olai_store::FieldRole::Data,
2291 },
2292 ::olai_store::ResourceFieldDescriptor {
2293 name: "full_name",
2294 role: ::olai_store::FieldRole::Data,
2295 },
2296 ::olai_store::ResourceFieldDescriptor {
2297 name: "comment",
2298 role: ::olai_store::FieldRole::Data,
2299 },
2300 ::olai_store::ResourceFieldDescriptor {
2301 name: "properties",
2302 role: ::olai_store::FieldRole::Data,
2303 },
2304 ::olai_store::ResourceFieldDescriptor {
2305 name: "owner",
2306 role: ::olai_store::FieldRole::Data,
2307 },
2308 ::olai_store::ResourceFieldDescriptor {
2309 name: "created_at",
2310 role: ::olai_store::FieldRole::Managed,
2311 },
2312 ::olai_store::ResourceFieldDescriptor {
2313 name: "created_by",
2314 role: ::olai_store::FieldRole::Managed,
2315 },
2316 ::olai_store::ResourceFieldDescriptor {
2317 name: "updated_at",
2318 role: ::olai_store::FieldRole::Managed,
2319 },
2320 ::olai_store::ResourceFieldDescriptor {
2321 name: "updated_by",
2322 role: ::olai_store::FieldRole::Managed,
2323 },
2324 ::olai_store::ResourceFieldDescriptor {
2325 name: "schema_id",
2326 role: ::olai_store::FieldRole::Identifier,
2327 },
2328 ::olai_store::ResourceFieldDescriptor {
2329 name: "storage_root",
2330 role: ::olai_store::FieldRole::Data,
2331 },
2332 ::olai_store::ResourceFieldDescriptor {
2333 name: "storage_location",
2334 role: ::olai_store::FieldRole::Data,
2335 },
2336 ],
2337 path_names: &["catalog_name", "name"],
2338 parent_label: Some(ObjectLabel::Catalog),
2339 },
2340 ::olai_store::ResourceTypeDescriptor {
2341 label: ObjectLabel::Share,
2342 fields: &[
2343 ::olai_store::ResourceFieldDescriptor {
2344 name: "id",
2345 role: ::olai_store::FieldRole::Identifier,
2346 },
2347 ::olai_store::ResourceFieldDescriptor {
2348 name: "name",
2349 role: ::olai_store::FieldRole::Data,
2350 },
2351 ::olai_store::ResourceFieldDescriptor {
2352 name: "objects",
2353 role: ::olai_store::FieldRole::Data,
2354 },
2355 ::olai_store::ResourceFieldDescriptor {
2356 name: "owner",
2357 role: ::olai_store::FieldRole::Data,
2358 },
2359 ::olai_store::ResourceFieldDescriptor {
2360 name: "comment",
2361 role: ::olai_store::FieldRole::Data,
2362 },
2363 ::olai_store::ResourceFieldDescriptor {
2364 name: "storage_location",
2365 role: ::olai_store::FieldRole::Data,
2366 },
2367 ::olai_store::ResourceFieldDescriptor {
2368 name: "storage_root",
2369 role: ::olai_store::FieldRole::Data,
2370 },
2371 ::olai_store::ResourceFieldDescriptor {
2372 name: "created_at",
2373 role: ::olai_store::FieldRole::Managed,
2374 },
2375 ::olai_store::ResourceFieldDescriptor {
2376 name: "created_by",
2377 role: ::olai_store::FieldRole::Managed,
2378 },
2379 ::olai_store::ResourceFieldDescriptor {
2380 name: "updated_at",
2381 role: ::olai_store::FieldRole::Managed,
2382 },
2383 ::olai_store::ResourceFieldDescriptor {
2384 name: "updated_by",
2385 role: ::olai_store::FieldRole::Managed,
2386 },
2387 ],
2388 path_names: &["name"],
2389 parent_label: None,
2390 },
2391 ::olai_store::ResourceTypeDescriptor {
2392 label: ObjectLabel::StagingTable,
2393 fields: &[
2394 ::olai_store::ResourceFieldDescriptor {
2395 name: "id",
2396 role: ::olai_store::FieldRole::Identifier,
2397 },
2398 ::olai_store::ResourceFieldDescriptor {
2399 name: "name",
2400 role: ::olai_store::FieldRole::Data,
2401 },
2402 ::olai_store::ResourceFieldDescriptor {
2403 name: "schema_name",
2404 role: ::olai_store::FieldRole::Data,
2405 },
2406 ::olai_store::ResourceFieldDescriptor {
2407 name: "catalog_name",
2408 role: ::olai_store::FieldRole::Data,
2409 },
2410 ::olai_store::ResourceFieldDescriptor {
2411 name: "staging_location",
2412 role: ::olai_store::FieldRole::Data,
2413 },
2414 ::olai_store::ResourceFieldDescriptor {
2415 name: "created_by",
2416 role: ::olai_store::FieldRole::Managed,
2417 },
2418 ::olai_store::ResourceFieldDescriptor {
2419 name: "stage_committed",
2420 role: ::olai_store::FieldRole::Data,
2421 },
2422 ::olai_store::ResourceFieldDescriptor {
2423 name: "created_at",
2424 role: ::olai_store::FieldRole::Managed,
2425 },
2426 ],
2427 path_names: &["name"],
2428 parent_label: None,
2429 },
2430 ::olai_store::ResourceTypeDescriptor {
2431 label: ObjectLabel::Table,
2432 fields: &[
2433 ::olai_store::ResourceFieldDescriptor {
2434 name: "name",
2435 role: ::olai_store::FieldRole::Data,
2436 },
2437 ::olai_store::ResourceFieldDescriptor {
2438 name: "catalog_name",
2439 role: ::olai_store::FieldRole::Data,
2440 },
2441 ::olai_store::ResourceFieldDescriptor {
2442 name: "schema_name",
2443 role: ::olai_store::FieldRole::Data,
2444 },
2445 ::olai_store::ResourceFieldDescriptor {
2446 name: "table_type",
2447 role: ::olai_store::FieldRole::Data,
2448 },
2449 ::olai_store::ResourceFieldDescriptor {
2450 name: "data_source_format",
2451 role: ::olai_store::FieldRole::Data,
2452 },
2453 ::olai_store::ResourceFieldDescriptor {
2454 name: "columns",
2455 role: ::olai_store::FieldRole::Data,
2456 },
2457 ::olai_store::ResourceFieldDescriptor {
2458 name: "storage_location",
2459 role: ::olai_store::FieldRole::Data,
2460 },
2461 ::olai_store::ResourceFieldDescriptor {
2462 name: "view_definition",
2463 role: ::olai_store::FieldRole::Data,
2464 },
2465 ::olai_store::ResourceFieldDescriptor {
2466 name: "view_dependencies",
2467 role: ::olai_store::FieldRole::Data,
2468 },
2469 ::olai_store::ResourceFieldDescriptor {
2470 name: "owner",
2471 role: ::olai_store::FieldRole::Data,
2472 },
2473 ::olai_store::ResourceFieldDescriptor {
2474 name: "comment",
2475 role: ::olai_store::FieldRole::Data,
2476 },
2477 ::olai_store::ResourceFieldDescriptor {
2478 name: "properties",
2479 role: ::olai_store::FieldRole::Data,
2480 },
2481 ::olai_store::ResourceFieldDescriptor {
2482 name: "storage_credential_name",
2483 role: ::olai_store::FieldRole::Data,
2484 },
2485 ::olai_store::ResourceFieldDescriptor {
2486 name: "full_name",
2487 role: ::olai_store::FieldRole::Data,
2488 },
2489 ::olai_store::ResourceFieldDescriptor {
2490 name: "created_at",
2491 role: ::olai_store::FieldRole::Managed,
2492 },
2493 ::olai_store::ResourceFieldDescriptor {
2494 name: "created_by",
2495 role: ::olai_store::FieldRole::Managed,
2496 },
2497 ::olai_store::ResourceFieldDescriptor {
2498 name: "updated_at",
2499 role: ::olai_store::FieldRole::Managed,
2500 },
2501 ::olai_store::ResourceFieldDescriptor {
2502 name: "updated_by",
2503 role: ::olai_store::FieldRole::Managed,
2504 },
2505 ::olai_store::ResourceFieldDescriptor {
2506 name: "deleted_at",
2507 role: ::olai_store::FieldRole::Data,
2508 },
2509 ::olai_store::ResourceFieldDescriptor {
2510 name: "table_id",
2511 role: ::olai_store::FieldRole::Identifier,
2512 },
2513 ],
2514 path_names: &["catalog_name", "schema_name", "name"],
2515 parent_label: Some(ObjectLabel::Catalog),
2516 },
2517 ::olai_store::ResourceTypeDescriptor {
2518 label: ObjectLabel::TagPolicy,
2519 fields: &[
2520 ::olai_store::ResourceFieldDescriptor {
2521 name: "tag_key",
2522 role: ::olai_store::FieldRole::Data,
2523 },
2524 ::olai_store::ResourceFieldDescriptor {
2525 name: "description",
2526 role: ::olai_store::FieldRole::Data,
2527 },
2528 ::olai_store::ResourceFieldDescriptor {
2529 name: "values",
2530 role: ::olai_store::FieldRole::Data,
2531 },
2532 ::olai_store::ResourceFieldDescriptor {
2533 name: "id",
2534 role: ::olai_store::FieldRole::Identifier,
2535 },
2536 ::olai_store::ResourceFieldDescriptor {
2537 name: "created_at",
2538 role: ::olai_store::FieldRole::Managed,
2539 },
2540 ::olai_store::ResourceFieldDescriptor {
2541 name: "updated_at",
2542 role: ::olai_store::FieldRole::Managed,
2543 },
2544 ],
2545 path_names: &["tag_key"],
2546 parent_label: None,
2547 },
2548 ::olai_store::ResourceTypeDescriptor {
2549 label: ObjectLabel::Volume,
2550 fields: &[
2551 ::olai_store::ResourceFieldDescriptor {
2552 name: "name",
2553 role: ::olai_store::FieldRole::Data,
2554 },
2555 ::olai_store::ResourceFieldDescriptor {
2556 name: "catalog_name",
2557 role: ::olai_store::FieldRole::Data,
2558 },
2559 ::olai_store::ResourceFieldDescriptor {
2560 name: "schema_name",
2561 role: ::olai_store::FieldRole::Data,
2562 },
2563 ::olai_store::ResourceFieldDescriptor {
2564 name: "full_name",
2565 role: ::olai_store::FieldRole::Data,
2566 },
2567 ::olai_store::ResourceFieldDescriptor {
2568 name: "storage_location",
2569 role: ::olai_store::FieldRole::Data,
2570 },
2571 ::olai_store::ResourceFieldDescriptor {
2572 name: "volume_id",
2573 role: ::olai_store::FieldRole::Identifier,
2574 },
2575 ::olai_store::ResourceFieldDescriptor {
2576 name: "volume_type",
2577 role: ::olai_store::FieldRole::Data,
2578 },
2579 ::olai_store::ResourceFieldDescriptor {
2580 name: "owner",
2581 role: ::olai_store::FieldRole::Data,
2582 },
2583 ::olai_store::ResourceFieldDescriptor {
2584 name: "comment",
2585 role: ::olai_store::FieldRole::Data,
2586 },
2587 ::olai_store::ResourceFieldDescriptor {
2588 name: "created_at",
2589 role: ::olai_store::FieldRole::Managed,
2590 },
2591 ::olai_store::ResourceFieldDescriptor {
2592 name: "created_by",
2593 role: ::olai_store::FieldRole::Managed,
2594 },
2595 ::olai_store::ResourceFieldDescriptor {
2596 name: "updated_at",
2597 role: ::olai_store::FieldRole::Managed,
2598 },
2599 ::olai_store::ResourceFieldDescriptor {
2600 name: "updated_by",
2601 role: ::olai_store::FieldRole::Managed,
2602 },
2603 ::olai_store::ResourceFieldDescriptor {
2604 name: "browse_only",
2605 role: ::olai_store::FieldRole::Data,
2606 },
2607 ::olai_store::ResourceFieldDescriptor {
2608 name: "metastore_id",
2609 role: ::olai_store::FieldRole::Data,
2610 },
2611 ],
2612 path_names: &["catalog_name", "schema_name", "name"],
2613 parent_label: Some(ObjectLabel::Catalog),
2614 },
2615];