Skip to main content

unitycatalog_common/models/_gen/
labels.rs

1// @generated — do not edit by hand.
2/// All resource types managed by the service.
3#[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/// Discriminant label for each resource type.
26#[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    /// Return the discriminant label for this resource.
71    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}
400use crate::Error;
401use crate::models::object::Object;
402use crate::models::resources::{ResourceExt, ResourceIdent, ResourceName, ResourceRef};
403impl TryFrom<Object> for super::agents::v0alpha1::Agent {
404    type Error = Error;
405    fn try_from(object: Object) -> Result<Self, Self::Error> {
406        let props = object
407            .properties
408            .ok_or_else(|| Error::generic("expected properties"))?;
409        let mut res: super::agents::v0alpha1::Agent = ::serde_json::from_value(props)?;
410        res.agent_id = object.id.hyphenated().to_string();
411        res.full_name = res.qualified_name();
412        Ok(res)
413    }
414}
415impl TryFrom<super::agents::v0alpha1::Agent> for Object {
416    type Error = Error;
417    fn try_from(obj: super::agents::v0alpha1::Agent) -> Result<Self, Self::Error> {
418        let id = ::uuid::Uuid::parse_str(&obj.agent_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
419        let name = obj.resource_name();
420        let mut properties = ::serde_json::to_value(obj)?;
421        if let ::serde_json::Value::Object(ref mut map) = properties {
422            map.remove("full_name");
423        }
424        Ok(Object {
425            id,
426            name,
427            label: ObjectLabel::Agent,
428            properties: Some(properties),
429            version: 0,
430            updated_at: None,
431            created_at: chrono::Utc::now(),
432        })
433    }
434}
435impl ResourceExt for super::agents::v0alpha1::Agent {
436    fn resource_name(&self) -> ResourceName {
437        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
438    }
439    fn resource_ref(&self) -> ResourceRef {
440        ::uuid::Uuid::parse_str(&self.agent_id)
441            .ok()
442            .map(ResourceRef::Uuid)
443            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
444    }
445    fn resource_ident(&self) -> ResourceIdent {
446        (ObjectLabel::Agent).to_ident(self.resource_ref())
447    }
448}
449impl TryFrom<Object> for super::agent_skills::v0alpha1::AgentSkill {
450    type Error = Error;
451    fn try_from(object: Object) -> Result<Self, Self::Error> {
452        let props = object
453            .properties
454            .ok_or_else(|| Error::generic("expected properties"))?;
455        let mut res: super::agent_skills::v0alpha1::AgentSkill = ::serde_json::from_value(props)?;
456        res.agent_skill_id = object.id.hyphenated().to_string();
457        res.full_name = res.qualified_name();
458        Ok(res)
459    }
460}
461impl TryFrom<super::agent_skills::v0alpha1::AgentSkill> for Object {
462    type Error = Error;
463    fn try_from(obj: super::agent_skills::v0alpha1::AgentSkill) -> Result<Self, Self::Error> {
464        let id =
465            ::uuid::Uuid::parse_str(&obj.agent_skill_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
466        let name = obj.resource_name();
467        let mut properties = ::serde_json::to_value(obj)?;
468        if let ::serde_json::Value::Object(ref mut map) = properties {
469            map.remove("full_name");
470        }
471        Ok(Object {
472            id,
473            name,
474            label: ObjectLabel::AgentSkill,
475            properties: Some(properties),
476            version: 0,
477            updated_at: None,
478            created_at: chrono::Utc::now(),
479        })
480    }
481}
482impl ResourceExt for super::agent_skills::v0alpha1::AgentSkill {
483    fn resource_name(&self) -> ResourceName {
484        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
485    }
486    fn resource_ref(&self) -> ResourceRef {
487        ::uuid::Uuid::parse_str(&self.agent_skill_id)
488            .ok()
489            .map(ResourceRef::Uuid)
490            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
491    }
492    fn resource_ident(&self) -> ResourceIdent {
493        (ObjectLabel::AgentSkill).to_ident(self.resource_ref())
494    }
495}
496impl TryFrom<Object> for super::catalogs::v1::Catalog {
497    type Error = Error;
498    fn try_from(object: Object) -> Result<Self, Self::Error> {
499        let props = object
500            .properties
501            .ok_or_else(|| Error::generic("expected properties"))?;
502        let mut res: super::catalogs::v1::Catalog = ::serde_json::from_value(props)?;
503        res.id = Some(object.id.hyphenated().to_string());
504        Ok(res)
505    }
506}
507impl TryFrom<super::catalogs::v1::Catalog> for Object {
508    type Error = Error;
509    fn try_from(obj: super::catalogs::v1::Catalog) -> Result<Self, Self::Error> {
510        let id = obj
511            .id
512            .as_ref()
513            .map(|id| ::uuid::Uuid::parse_str(id))
514            .transpose()?
515            .unwrap_or_else(::uuid::Uuid::nil);
516        let name = obj.resource_name();
517        let properties = ::serde_json::to_value(obj)?;
518        Ok(Object {
519            id,
520            name,
521            label: ObjectLabel::Catalog,
522            properties: Some(properties),
523            version: 0,
524            updated_at: None,
525            created_at: chrono::Utc::now(),
526        })
527    }
528}
529impl ResourceExt for super::catalogs::v1::Catalog {
530    fn resource_name(&self) -> ResourceName {
531        ResourceName::new([&self.name])
532    }
533    fn resource_ref(&self) -> ResourceRef {
534        self.id
535            .as_ref()
536            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
537            .map(ResourceRef::Uuid)
538            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
539    }
540    fn resource_ident(&self) -> ResourceIdent {
541        (ObjectLabel::Catalog).to_ident(self.resource_ref())
542    }
543}
544impl TryFrom<Object> for super::tables::v1::Column {
545    type Error = Error;
546    fn try_from(object: Object) -> Result<Self, Self::Error> {
547        let props = object
548            .properties
549            .ok_or_else(|| Error::generic("expected properties"))?;
550        let mut res: super::tables::v1::Column = ::serde_json::from_value(props)?;
551        res.column_id = Some(object.id.hyphenated().to_string());
552        Ok(res)
553    }
554}
555impl TryFrom<super::tables::v1::Column> for Object {
556    type Error = Error;
557    fn try_from(obj: super::tables::v1::Column) -> Result<Self, Self::Error> {
558        let id = obj
559            .column_id
560            .as_ref()
561            .map(|id| ::uuid::Uuid::parse_str(id))
562            .transpose()?
563            .unwrap_or_else(::uuid::Uuid::nil);
564        let name = obj.resource_name();
565        let properties = ::serde_json::to_value(obj)?;
566        Ok(Object {
567            id,
568            name,
569            label: ObjectLabel::Column,
570            properties: Some(properties),
571            version: 0,
572            updated_at: None,
573            created_at: chrono::Utc::now(),
574        })
575    }
576}
577impl ResourceExt for super::tables::v1::Column {
578    fn resource_name(&self) -> ResourceName {
579        ResourceName::new([&self.name])
580    }
581    fn resource_ref(&self) -> ResourceRef {
582        self.column_id
583            .as_ref()
584            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
585            .map(ResourceRef::Uuid)
586            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
587    }
588    fn resource_ident(&self) -> ResourceIdent {
589        (ObjectLabel::Column).to_ident(self.resource_ref())
590    }
591}
592impl TryFrom<Object> for super::credentials::v1::Credential {
593    type Error = Error;
594    fn try_from(object: Object) -> Result<Self, Self::Error> {
595        let props = object
596            .properties
597            .ok_or_else(|| Error::generic("expected properties"))?;
598        let mut res: super::credentials::v1::Credential = ::serde_json::from_value(props)?;
599        res.id = Some(object.id.hyphenated().to_string());
600        res.full_name = res.qualified_name();
601        Ok(res)
602    }
603}
604impl TryFrom<super::credentials::v1::Credential> for Object {
605    type Error = Error;
606    fn try_from(obj: super::credentials::v1::Credential) -> Result<Self, Self::Error> {
607        let id = obj
608            .id
609            .as_ref()
610            .map(|id| ::uuid::Uuid::parse_str(id))
611            .transpose()?
612            .unwrap_or_else(::uuid::Uuid::nil);
613        let name = obj.resource_name();
614        let mut properties = ::serde_json::to_value(obj)?;
615        if let ::serde_json::Value::Object(ref mut map) = properties {
616            map.remove("full_name");
617        }
618        Ok(Object {
619            id,
620            name,
621            label: ObjectLabel::Credential,
622            properties: Some(properties),
623            version: 0,
624            updated_at: None,
625            created_at: chrono::Utc::now(),
626        })
627    }
628}
629impl ResourceExt for super::credentials::v1::Credential {
630    fn resource_name(&self) -> ResourceName {
631        ResourceName::new([&self.name])
632    }
633    fn resource_ref(&self) -> ResourceRef {
634        self.id
635            .as_ref()
636            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
637            .map(ResourceRef::Uuid)
638            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
639    }
640    fn resource_ident(&self) -> ResourceIdent {
641        (ObjectLabel::Credential).to_ident(self.resource_ref())
642    }
643}
644impl TryFrom<Object> for super::external_locations::v1::ExternalLocation {
645    type Error = Error;
646    fn try_from(object: Object) -> Result<Self, Self::Error> {
647        let props = object
648            .properties
649            .ok_or_else(|| Error::generic("expected properties"))?;
650        let mut res: super::external_locations::v1::ExternalLocation =
651            ::serde_json::from_value(props)?;
652        res.external_location_id = Some(object.id.hyphenated().to_string());
653        Ok(res)
654    }
655}
656impl TryFrom<super::external_locations::v1::ExternalLocation> for Object {
657    type Error = Error;
658    fn try_from(obj: super::external_locations::v1::ExternalLocation) -> Result<Self, Self::Error> {
659        let id = obj
660            .external_location_id
661            .as_ref()
662            .map(|id| ::uuid::Uuid::parse_str(id))
663            .transpose()?
664            .unwrap_or_else(::uuid::Uuid::nil);
665        let name = obj.resource_name();
666        let properties = ::serde_json::to_value(obj)?;
667        Ok(Object {
668            id,
669            name,
670            label: ObjectLabel::ExternalLocation,
671            properties: Some(properties),
672            version: 0,
673            updated_at: None,
674            created_at: chrono::Utc::now(),
675        })
676    }
677}
678impl ResourceExt for super::external_locations::v1::ExternalLocation {
679    fn resource_name(&self) -> ResourceName {
680        ResourceName::new([&self.name])
681    }
682    fn resource_ref(&self) -> ResourceRef {
683        self.external_location_id
684            .as_ref()
685            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
686            .map(ResourceRef::Uuid)
687            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
688    }
689    fn resource_ident(&self) -> ResourceIdent {
690        (ObjectLabel::ExternalLocation).to_ident(self.resource_ref())
691    }
692}
693impl TryFrom<Object> for super::functions::v1::Function {
694    type Error = Error;
695    fn try_from(object: Object) -> Result<Self, Self::Error> {
696        let props = object
697            .properties
698            .ok_or_else(|| Error::generic("expected properties"))?;
699        let mut res: super::functions::v1::Function = ::serde_json::from_value(props)?;
700        res.function_id = Some(object.id.hyphenated().to_string());
701        res.full_name = res.qualified_name();
702        Ok(res)
703    }
704}
705impl TryFrom<super::functions::v1::Function> for Object {
706    type Error = Error;
707    fn try_from(obj: super::functions::v1::Function) -> Result<Self, Self::Error> {
708        let id = obj
709            .function_id
710            .as_ref()
711            .map(|id| ::uuid::Uuid::parse_str(id))
712            .transpose()?
713            .unwrap_or_else(::uuid::Uuid::nil);
714        let name = obj.resource_name();
715        let mut properties = ::serde_json::to_value(obj)?;
716        if let ::serde_json::Value::Object(ref mut map) = properties {
717            map.remove("full_name");
718        }
719        Ok(Object {
720            id,
721            name,
722            label: ObjectLabel::Function,
723            properties: Some(properties),
724            version: 0,
725            updated_at: None,
726            created_at: chrono::Utc::now(),
727        })
728    }
729}
730impl ResourceExt for super::functions::v1::Function {
731    fn resource_name(&self) -> ResourceName {
732        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
733    }
734    fn resource_ref(&self) -> ResourceRef {
735        self.function_id
736            .as_ref()
737            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
738            .map(ResourceRef::Uuid)
739            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
740    }
741    fn resource_ident(&self) -> ResourceIdent {
742        (ObjectLabel::Function).to_ident(self.resource_ref())
743    }
744}
745impl TryFrom<Object> for super::model_versions::v1::ModelVersion {
746    type Error = Error;
747    fn try_from(object: Object) -> Result<Self, Self::Error> {
748        let props = object
749            .properties
750            .ok_or_else(|| Error::generic("expected properties"))?;
751        let mut res: super::model_versions::v1::ModelVersion = ::serde_json::from_value(props)?;
752        res.id = Some(object.id.hyphenated().to_string());
753        Ok(res)
754    }
755}
756impl TryFrom<super::model_versions::v1::ModelVersion> for Object {
757    type Error = Error;
758    fn try_from(obj: super::model_versions::v1::ModelVersion) -> Result<Self, Self::Error> {
759        let id = obj
760            .id
761            .as_ref()
762            .map(|id| ::uuid::Uuid::parse_str(id))
763            .transpose()?
764            .unwrap_or_else(::uuid::Uuid::nil);
765        let name = obj.resource_name();
766        let properties = ::serde_json::to_value(obj)?;
767        Ok(Object {
768            id,
769            name,
770            label: ObjectLabel::ModelVersion,
771            properties: Some(properties),
772            version: 0,
773            updated_at: None,
774            created_at: chrono::Utc::now(),
775        })
776    }
777}
778impl ResourceExt for super::model_versions::v1::ModelVersion {
779    fn resource_name(&self) -> ResourceName {
780        ResourceName::new([
781            &self.catalog_name,
782            &self.schema_name,
783            &self.model_name,
784            &self.version.to_string(),
785        ])
786    }
787    fn resource_ref(&self) -> ResourceRef {
788        self.id
789            .as_ref()
790            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
791            .map(ResourceRef::Uuid)
792            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
793    }
794    fn resource_ident(&self) -> ResourceIdent {
795        (ObjectLabel::ModelVersion).to_ident(self.resource_ref())
796    }
797}
798impl TryFrom<Object> for super::policies::v1::PolicyInfo {
799    type Error = Error;
800    fn try_from(object: Object) -> Result<Self, Self::Error> {
801        let props = object
802            .properties
803            .ok_or_else(|| Error::generic("expected properties"))?;
804        let mut res: super::policies::v1::PolicyInfo = ::serde_json::from_value(props)?;
805        res.id = Some(object.id.hyphenated().to_string());
806        Ok(res)
807    }
808}
809impl TryFrom<super::policies::v1::PolicyInfo> for Object {
810    type Error = Error;
811    fn try_from(obj: super::policies::v1::PolicyInfo) -> Result<Self, Self::Error> {
812        let id = obj
813            .id
814            .as_ref()
815            .map(|id| ::uuid::Uuid::parse_str(id))
816            .transpose()?
817            .unwrap_or_else(::uuid::Uuid::nil);
818        let name = obj.resource_name();
819        let properties = ::serde_json::to_value(obj)?;
820        Ok(Object {
821            id,
822            name,
823            label: ObjectLabel::PolicyInfo,
824            properties: Some(properties),
825            version: 0,
826            updated_at: None,
827            created_at: chrono::Utc::now(),
828        })
829    }
830}
831impl ResourceExt for super::policies::v1::PolicyInfo {
832    fn resource_name(&self) -> ResourceName {
833        ResourceName::new([&self.name])
834    }
835    fn resource_ref(&self) -> ResourceRef {
836        self.id
837            .as_ref()
838            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
839            .map(ResourceRef::Uuid)
840            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
841    }
842    fn resource_ident(&self) -> ResourceIdent {
843        (ObjectLabel::PolicyInfo).to_ident(self.resource_ref())
844    }
845}
846impl TryFrom<Object> for super::providers::v1::Provider {
847    type Error = Error;
848    fn try_from(object: Object) -> Result<Self, Self::Error> {
849        let props = object
850            .properties
851            .ok_or_else(|| Error::generic("expected properties"))?;
852        let mut res: super::providers::v1::Provider = ::serde_json::from_value(props)?;
853        res.id = Some(object.id.hyphenated().to_string());
854        Ok(res)
855    }
856}
857impl TryFrom<super::providers::v1::Provider> for Object {
858    type Error = Error;
859    fn try_from(obj: super::providers::v1::Provider) -> Result<Self, Self::Error> {
860        let id = obj
861            .id
862            .as_ref()
863            .map(|id| ::uuid::Uuid::parse_str(id))
864            .transpose()?
865            .unwrap_or_else(::uuid::Uuid::nil);
866        let name = obj.resource_name();
867        let properties = ::serde_json::to_value(obj)?;
868        Ok(Object {
869            id,
870            name,
871            label: ObjectLabel::Provider,
872            properties: Some(properties),
873            version: 0,
874            updated_at: None,
875            created_at: chrono::Utc::now(),
876        })
877    }
878}
879impl ResourceExt for super::providers::v1::Provider {
880    fn resource_name(&self) -> ResourceName {
881        ResourceName::new([&self.name])
882    }
883    fn resource_ref(&self) -> ResourceRef {
884        self.id
885            .as_ref()
886            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
887            .map(ResourceRef::Uuid)
888            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
889    }
890    fn resource_ident(&self) -> ResourceIdent {
891        (ObjectLabel::Provider).to_ident(self.resource_ref())
892    }
893}
894impl TryFrom<Object> for super::recipients::v1::Recipient {
895    type Error = Error;
896    fn try_from(object: Object) -> Result<Self, Self::Error> {
897        let props = object
898            .properties
899            .ok_or_else(|| Error::generic("expected properties"))?;
900        let mut res: super::recipients::v1::Recipient = ::serde_json::from_value(props)?;
901        res.id = Some(object.id.hyphenated().to_string());
902        Ok(res)
903    }
904}
905impl TryFrom<super::recipients::v1::Recipient> for Object {
906    type Error = Error;
907    fn try_from(obj: super::recipients::v1::Recipient) -> Result<Self, Self::Error> {
908        let id = obj
909            .id
910            .as_ref()
911            .map(|id| ::uuid::Uuid::parse_str(id))
912            .transpose()?
913            .unwrap_or_else(::uuid::Uuid::nil);
914        let name = obj.resource_name();
915        let properties = ::serde_json::to_value(obj)?;
916        Ok(Object {
917            id,
918            name,
919            label: ObjectLabel::Recipient,
920            properties: Some(properties),
921            version: 0,
922            updated_at: None,
923            created_at: chrono::Utc::now(),
924        })
925    }
926}
927impl ResourceExt for super::recipients::v1::Recipient {
928    fn resource_name(&self) -> ResourceName {
929        ResourceName::new([&self.name])
930    }
931    fn resource_ref(&self) -> ResourceRef {
932        self.id
933            .as_ref()
934            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
935            .map(ResourceRef::Uuid)
936            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
937    }
938    fn resource_ident(&self) -> ResourceIdent {
939        (ObjectLabel::Recipient).to_ident(self.resource_ref())
940    }
941}
942impl TryFrom<Object> for super::registered_models::v1::RegisteredModel {
943    type Error = Error;
944    fn try_from(object: Object) -> Result<Self, Self::Error> {
945        let props = object
946            .properties
947            .ok_or_else(|| Error::generic("expected properties"))?;
948        let mut res: super::registered_models::v1::RegisteredModel =
949            ::serde_json::from_value(props)?;
950        res.id = Some(object.id.hyphenated().to_string());
951        res.full_name = res.qualified_name();
952        Ok(res)
953    }
954}
955impl TryFrom<super::registered_models::v1::RegisteredModel> for Object {
956    type Error = Error;
957    fn try_from(obj: super::registered_models::v1::RegisteredModel) -> Result<Self, Self::Error> {
958        let id = obj
959            .id
960            .as_ref()
961            .map(|id| ::uuid::Uuid::parse_str(id))
962            .transpose()?
963            .unwrap_or_else(::uuid::Uuid::nil);
964        let name = obj.resource_name();
965        let mut properties = ::serde_json::to_value(obj)?;
966        if let ::serde_json::Value::Object(ref mut map) = properties {
967            map.remove("full_name");
968        }
969        Ok(Object {
970            id,
971            name,
972            label: ObjectLabel::RegisteredModel,
973            properties: Some(properties),
974            version: 0,
975            updated_at: None,
976            created_at: chrono::Utc::now(),
977        })
978    }
979}
980impl ResourceExt for super::registered_models::v1::RegisteredModel {
981    fn resource_name(&self) -> ResourceName {
982        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
983    }
984    fn resource_ref(&self) -> ResourceRef {
985        self.id
986            .as_ref()
987            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
988            .map(ResourceRef::Uuid)
989            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
990    }
991    fn resource_ident(&self) -> ResourceIdent {
992        (ObjectLabel::RegisteredModel).to_ident(self.resource_ref())
993    }
994}
995impl TryFrom<Object> for super::schemas::v1::Schema {
996    type Error = Error;
997    fn try_from(object: Object) -> Result<Self, Self::Error> {
998        let props = object
999            .properties
1000            .ok_or_else(|| Error::generic("expected properties"))?;
1001        let mut res: super::schemas::v1::Schema = ::serde_json::from_value(props)?;
1002        res.schema_id = Some(object.id.hyphenated().to_string());
1003        res.full_name = res.qualified_name();
1004        Ok(res)
1005    }
1006}
1007impl TryFrom<super::schemas::v1::Schema> for Object {
1008    type Error = Error;
1009    fn try_from(obj: super::schemas::v1::Schema) -> Result<Self, Self::Error> {
1010        let id = obj
1011            .schema_id
1012            .as_ref()
1013            .map(|id| ::uuid::Uuid::parse_str(id))
1014            .transpose()?
1015            .unwrap_or_else(::uuid::Uuid::nil);
1016        let name = obj.resource_name();
1017        let mut properties = ::serde_json::to_value(obj)?;
1018        if let ::serde_json::Value::Object(ref mut map) = properties {
1019            map.remove("full_name");
1020        }
1021        Ok(Object {
1022            id,
1023            name,
1024            label: ObjectLabel::Schema,
1025            properties: Some(properties),
1026            version: 0,
1027            updated_at: None,
1028            created_at: chrono::Utc::now(),
1029        })
1030    }
1031}
1032impl ResourceExt for super::schemas::v1::Schema {
1033    fn resource_name(&self) -> ResourceName {
1034        ResourceName::new([&self.catalog_name, &self.name])
1035    }
1036    fn resource_ref(&self) -> ResourceRef {
1037        self.schema_id
1038            .as_ref()
1039            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1040            .map(ResourceRef::Uuid)
1041            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1042    }
1043    fn resource_ident(&self) -> ResourceIdent {
1044        (ObjectLabel::Schema).to_ident(self.resource_ref())
1045    }
1046}
1047impl TryFrom<Object> for super::shares::v1::Share {
1048    type Error = Error;
1049    fn try_from(object: Object) -> Result<Self, Self::Error> {
1050        let props = object
1051            .properties
1052            .ok_or_else(|| Error::generic("expected properties"))?;
1053        let mut res: super::shares::v1::Share = ::serde_json::from_value(props)?;
1054        res.id = Some(object.id.hyphenated().to_string());
1055        Ok(res)
1056    }
1057}
1058impl TryFrom<super::shares::v1::Share> for Object {
1059    type Error = Error;
1060    fn try_from(obj: super::shares::v1::Share) -> Result<Self, Self::Error> {
1061        let id = obj
1062            .id
1063            .as_ref()
1064            .map(|id| ::uuid::Uuid::parse_str(id))
1065            .transpose()?
1066            .unwrap_or_else(::uuid::Uuid::nil);
1067        let name = obj.resource_name();
1068        let properties = ::serde_json::to_value(obj)?;
1069        Ok(Object {
1070            id,
1071            name,
1072            label: ObjectLabel::Share,
1073            properties: Some(properties),
1074            version: 0,
1075            updated_at: None,
1076            created_at: chrono::Utc::now(),
1077        })
1078    }
1079}
1080impl ResourceExt for super::shares::v1::Share {
1081    fn resource_name(&self) -> ResourceName {
1082        ResourceName::new([&self.name])
1083    }
1084    fn resource_ref(&self) -> ResourceRef {
1085        self.id
1086            .as_ref()
1087            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1088            .map(ResourceRef::Uuid)
1089            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1090    }
1091    fn resource_ident(&self) -> ResourceIdent {
1092        (ObjectLabel::Share).to_ident(self.resource_ref())
1093    }
1094}
1095impl TryFrom<Object> for super::staging_tables::v1::StagingTable {
1096    type Error = Error;
1097    fn try_from(object: Object) -> Result<Self, Self::Error> {
1098        let props = object
1099            .properties
1100            .ok_or_else(|| Error::generic("expected properties"))?;
1101        let mut res: super::staging_tables::v1::StagingTable = ::serde_json::from_value(props)?;
1102        res.id = object.id.hyphenated().to_string();
1103        Ok(res)
1104    }
1105}
1106impl TryFrom<super::staging_tables::v1::StagingTable> for Object {
1107    type Error = Error;
1108    fn try_from(obj: super::staging_tables::v1::StagingTable) -> Result<Self, Self::Error> {
1109        let id = ::uuid::Uuid::parse_str(&obj.id).unwrap_or_else(|_| ::uuid::Uuid::nil());
1110        let name = obj.resource_name();
1111        let properties = ::serde_json::to_value(obj)?;
1112        Ok(Object {
1113            id,
1114            name,
1115            label: ObjectLabel::StagingTable,
1116            properties: Some(properties),
1117            version: 0,
1118            updated_at: None,
1119            created_at: chrono::Utc::now(),
1120        })
1121    }
1122}
1123impl ResourceExt for super::staging_tables::v1::StagingTable {
1124    fn resource_name(&self) -> ResourceName {
1125        ResourceName::new([&self.name])
1126    }
1127    fn resource_ref(&self) -> ResourceRef {
1128        ::uuid::Uuid::parse_str(&self.id)
1129            .ok()
1130            .map(ResourceRef::Uuid)
1131            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1132    }
1133    fn resource_ident(&self) -> ResourceIdent {
1134        (ObjectLabel::StagingTable).to_ident(self.resource_ref())
1135    }
1136}
1137impl TryFrom<Object> for super::tables::v1::Table {
1138    type Error = Error;
1139    fn try_from(object: Object) -> Result<Self, Self::Error> {
1140        let props = object
1141            .properties
1142            .ok_or_else(|| Error::generic("expected properties"))?;
1143        let mut res: super::tables::v1::Table = ::serde_json::from_value(props)?;
1144        res.table_id = Some(object.id.hyphenated().to_string());
1145        res.full_name = res.qualified_name();
1146        Ok(res)
1147    }
1148}
1149impl TryFrom<super::tables::v1::Table> for Object {
1150    type Error = Error;
1151    fn try_from(obj: super::tables::v1::Table) -> Result<Self, Self::Error> {
1152        let id = obj
1153            .table_id
1154            .as_ref()
1155            .map(|id| ::uuid::Uuid::parse_str(id))
1156            .transpose()?
1157            .unwrap_or_else(::uuid::Uuid::nil);
1158        let name = obj.resource_name();
1159        let mut properties = ::serde_json::to_value(obj)?;
1160        if let ::serde_json::Value::Object(ref mut map) = properties {
1161            map.remove("full_name");
1162        }
1163        Ok(Object {
1164            id,
1165            name,
1166            label: ObjectLabel::Table,
1167            properties: Some(properties),
1168            version: 0,
1169            updated_at: None,
1170            created_at: chrono::Utc::now(),
1171        })
1172    }
1173}
1174impl ResourceExt for super::tables::v1::Table {
1175    fn resource_name(&self) -> ResourceName {
1176        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
1177    }
1178    fn resource_ref(&self) -> ResourceRef {
1179        self.table_id
1180            .as_ref()
1181            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1182            .map(ResourceRef::Uuid)
1183            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1184    }
1185    fn resource_ident(&self) -> ResourceIdent {
1186        (ObjectLabel::Table).to_ident(self.resource_ref())
1187    }
1188}
1189impl TryFrom<Object> for super::tags::v1::TagPolicy {
1190    type Error = Error;
1191    fn try_from(object: Object) -> Result<Self, Self::Error> {
1192        let props = object
1193            .properties
1194            .ok_or_else(|| Error::generic("expected properties"))?;
1195        let mut res: super::tags::v1::TagPolicy = ::serde_json::from_value(props)?;
1196        res.id = Some(object.id.hyphenated().to_string());
1197        Ok(res)
1198    }
1199}
1200impl TryFrom<super::tags::v1::TagPolicy> for Object {
1201    type Error = Error;
1202    fn try_from(obj: super::tags::v1::TagPolicy) -> Result<Self, Self::Error> {
1203        let id = obj
1204            .id
1205            .as_ref()
1206            .map(|id| ::uuid::Uuid::parse_str(id))
1207            .transpose()?
1208            .unwrap_or_else(::uuid::Uuid::nil);
1209        let name = obj.resource_name();
1210        let properties = ::serde_json::to_value(obj)?;
1211        Ok(Object {
1212            id,
1213            name,
1214            label: ObjectLabel::TagPolicy,
1215            properties: Some(properties),
1216            version: 0,
1217            updated_at: None,
1218            created_at: chrono::Utc::now(),
1219        })
1220    }
1221}
1222impl ResourceExt for super::tags::v1::TagPolicy {
1223    fn resource_name(&self) -> ResourceName {
1224        ResourceName::new([&self.tag_key])
1225    }
1226    fn resource_ref(&self) -> ResourceRef {
1227        self.id
1228            .as_ref()
1229            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
1230            .map(ResourceRef::Uuid)
1231            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1232    }
1233    fn resource_ident(&self) -> ResourceIdent {
1234        (ObjectLabel::TagPolicy).to_ident(self.resource_ref())
1235    }
1236}
1237impl TryFrom<Object> for super::volumes::v1::Volume {
1238    type Error = Error;
1239    fn try_from(object: Object) -> Result<Self, Self::Error> {
1240        let props = object
1241            .properties
1242            .ok_or_else(|| Error::generic("expected properties"))?;
1243        let mut res: super::volumes::v1::Volume = ::serde_json::from_value(props)?;
1244        res.volume_id = object.id.hyphenated().to_string();
1245        res.full_name = res.qualified_name();
1246        Ok(res)
1247    }
1248}
1249impl TryFrom<super::volumes::v1::Volume> for Object {
1250    type Error = Error;
1251    fn try_from(obj: super::volumes::v1::Volume) -> Result<Self, Self::Error> {
1252        let id = ::uuid::Uuid::parse_str(&obj.volume_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
1253        let name = obj.resource_name();
1254        let mut properties = ::serde_json::to_value(obj)?;
1255        if let ::serde_json::Value::Object(ref mut map) = properties {
1256            map.remove("full_name");
1257        }
1258        Ok(Object {
1259            id,
1260            name,
1261            label: ObjectLabel::Volume,
1262            properties: Some(properties),
1263            version: 0,
1264            updated_at: None,
1265            created_at: chrono::Utc::now(),
1266        })
1267    }
1268}
1269impl ResourceExt for super::volumes::v1::Volume {
1270    fn resource_name(&self) -> ResourceName {
1271        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
1272    }
1273    fn resource_ref(&self) -> ResourceRef {
1274        ::uuid::Uuid::parse_str(&self.volume_id)
1275            .ok()
1276            .map(ResourceRef::Uuid)
1277            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
1278    }
1279    fn resource_ident(&self) -> ResourceIdent {
1280        (ObjectLabel::Volume).to_ident(self.resource_ref())
1281    }
1282}
1283impl super::agents::v0alpha1::Agent {
1284    /// Returns the fully-qualified dot-separated name computed from component fields.
1285    pub fn qualified_name(&self) -> String {
1286        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1287    }
1288}
1289impl super::agent_skills::v0alpha1::AgentSkill {
1290    /// Returns the fully-qualified dot-separated name computed from component fields.
1291    pub fn qualified_name(&self) -> String {
1292        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1293    }
1294}
1295impl super::catalogs::v1::Catalog {
1296    /// Returns the fully-qualified dot-separated name computed from component fields.
1297    pub fn qualified_name(&self) -> String {
1298        self.name.clone()
1299    }
1300}
1301impl super::tables::v1::Column {
1302    /// Returns the fully-qualified dot-separated name computed from component fields.
1303    pub fn qualified_name(&self) -> String {
1304        self.name.clone()
1305    }
1306}
1307impl super::credentials::v1::Credential {
1308    /// Returns the fully-qualified dot-separated name computed from component fields.
1309    pub fn qualified_name(&self) -> String {
1310        self.name.clone()
1311    }
1312}
1313impl super::external_locations::v1::ExternalLocation {
1314    /// Returns the fully-qualified dot-separated name computed from component fields.
1315    pub fn qualified_name(&self) -> String {
1316        self.name.clone()
1317    }
1318}
1319impl super::functions::v1::Function {
1320    /// Returns the fully-qualified dot-separated name computed from component fields.
1321    pub fn qualified_name(&self) -> String {
1322        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1323    }
1324}
1325impl super::model_versions::v1::ModelVersion {
1326    /// Returns the fully-qualified dot-separated name computed from component fields.
1327    pub fn qualified_name(&self) -> String {
1328        format!(
1329            "{}.{}.{}.{}",
1330            self.catalog_name, self.schema_name, self.model_name, self.version
1331        )
1332    }
1333}
1334impl super::policies::v1::PolicyInfo {
1335    /// Returns the fully-qualified dot-separated name computed from component fields.
1336    pub fn qualified_name(&self) -> String {
1337        self.name.clone()
1338    }
1339}
1340impl super::providers::v1::Provider {
1341    /// Returns the fully-qualified dot-separated name computed from component fields.
1342    pub fn qualified_name(&self) -> String {
1343        self.name.clone()
1344    }
1345}
1346impl super::recipients::v1::Recipient {
1347    /// Returns the fully-qualified dot-separated name computed from component fields.
1348    pub fn qualified_name(&self) -> String {
1349        self.name.clone()
1350    }
1351}
1352impl super::registered_models::v1::RegisteredModel {
1353    /// Returns the fully-qualified dot-separated name computed from component fields.
1354    pub fn qualified_name(&self) -> String {
1355        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1356    }
1357}
1358impl super::schemas::v1::Schema {
1359    /// Returns the fully-qualified dot-separated name computed from component fields.
1360    pub fn qualified_name(&self) -> String {
1361        format!("{}.{}", self.catalog_name, self.name)
1362    }
1363}
1364impl super::shares::v1::Share {
1365    /// Returns the fully-qualified dot-separated name computed from component fields.
1366    pub fn qualified_name(&self) -> String {
1367        self.name.clone()
1368    }
1369}
1370impl super::staging_tables::v1::StagingTable {
1371    /// Returns the fully-qualified dot-separated name computed from component fields.
1372    pub fn qualified_name(&self) -> String {
1373        self.name.clone()
1374    }
1375}
1376impl super::tables::v1::Table {
1377    /// Returns the fully-qualified dot-separated name computed from component fields.
1378    pub fn qualified_name(&self) -> String {
1379        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1380    }
1381}
1382impl super::tags::v1::TagPolicy {
1383    /// Returns the fully-qualified dot-separated name computed from component fields.
1384    pub fn qualified_name(&self) -> String {
1385        self.tag_key.clone()
1386    }
1387}
1388impl super::volumes::v1::Volume {
1389    /// Returns the fully-qualified dot-separated name computed from component fields.
1390    pub fn qualified_name(&self) -> String {
1391        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1392    }
1393}
1394impl ::olai_store::Label for ObjectLabel {
1395    fn as_str(&self) -> &str {
1396        self.as_ref()
1397    }
1398}
1399/// Static resource type descriptors derived from proto annotations.
1400///
1401/// Each entry describes a resource type's fields (with roles: data, identifier,
1402/// sensitive, managed), hierarchical name components, and parent relationship.
1403///
1404/// Use `ResourceRegistry::from_static` to build a runtime registry from this data.
1405pub static RESOURCE_DESCRIPTORS: &[::olai_store::ResourceTypeDescriptor<ObjectLabel>] = &[
1406    ::olai_store::ResourceTypeDescriptor {
1407        label: ObjectLabel::Agent,
1408        fields: &[
1409            ::olai_store::ResourceFieldDescriptor {
1410                name: "name",
1411                role: ::olai_store::FieldRole::Data,
1412            },
1413            ::olai_store::ResourceFieldDescriptor {
1414                name: "catalog_name",
1415                role: ::olai_store::FieldRole::Data,
1416            },
1417            ::olai_store::ResourceFieldDescriptor {
1418                name: "schema_name",
1419                role: ::olai_store::FieldRole::Data,
1420            },
1421            ::olai_store::ResourceFieldDescriptor {
1422                name: "full_name",
1423                role: ::olai_store::FieldRole::Data,
1424            },
1425            ::olai_store::ResourceFieldDescriptor {
1426                name: "agent_id",
1427                role: ::olai_store::FieldRole::Identifier,
1428            },
1429            ::olai_store::ResourceFieldDescriptor {
1430                name: "invocation_protocol",
1431                role: ::olai_store::FieldRole::Data,
1432            },
1433            ::olai_store::ResourceFieldDescriptor {
1434                name: "endpoint",
1435                role: ::olai_store::FieldRole::Data,
1436            },
1437            ::olai_store::ResourceFieldDescriptor {
1438                name: "description",
1439                role: ::olai_store::FieldRole::Data,
1440            },
1441            ::olai_store::ResourceFieldDescriptor {
1442                name: "capabilities",
1443                role: ::olai_store::FieldRole::Data,
1444            },
1445            ::olai_store::ResourceFieldDescriptor {
1446                name: "input_schema",
1447                role: ::olai_store::FieldRole::Data,
1448            },
1449            ::olai_store::ResourceFieldDescriptor {
1450                name: "owner",
1451                role: ::olai_store::FieldRole::Data,
1452            },
1453            ::olai_store::ResourceFieldDescriptor {
1454                name: "comment",
1455                role: ::olai_store::FieldRole::Data,
1456            },
1457            ::olai_store::ResourceFieldDescriptor {
1458                name: "created_at",
1459                role: ::olai_store::FieldRole::Managed,
1460            },
1461            ::olai_store::ResourceFieldDescriptor {
1462                name: "created_by",
1463                role: ::olai_store::FieldRole::Managed,
1464            },
1465            ::olai_store::ResourceFieldDescriptor {
1466                name: "updated_at",
1467                role: ::olai_store::FieldRole::Managed,
1468            },
1469            ::olai_store::ResourceFieldDescriptor {
1470                name: "updated_by",
1471                role: ::olai_store::FieldRole::Managed,
1472            },
1473            ::olai_store::ResourceFieldDescriptor {
1474                name: "metastore_id",
1475                role: ::olai_store::FieldRole::Data,
1476            },
1477        ],
1478        path_names: &["catalog_name", "schema_name", "name"],
1479        parent_label: Some(ObjectLabel::Catalog),
1480    },
1481    ::olai_store::ResourceTypeDescriptor {
1482        label: ObjectLabel::AgentSkill,
1483        fields: &[
1484            ::olai_store::ResourceFieldDescriptor {
1485                name: "name",
1486                role: ::olai_store::FieldRole::Data,
1487            },
1488            ::olai_store::ResourceFieldDescriptor {
1489                name: "catalog_name",
1490                role: ::olai_store::FieldRole::Data,
1491            },
1492            ::olai_store::ResourceFieldDescriptor {
1493                name: "schema_name",
1494                role: ::olai_store::FieldRole::Data,
1495            },
1496            ::olai_store::ResourceFieldDescriptor {
1497                name: "full_name",
1498                role: ::olai_store::FieldRole::Data,
1499            },
1500            ::olai_store::ResourceFieldDescriptor {
1501                name: "storage_location",
1502                role: ::olai_store::FieldRole::Data,
1503            },
1504            ::olai_store::ResourceFieldDescriptor {
1505                name: "agent_skill_id",
1506                role: ::olai_store::FieldRole::Identifier,
1507            },
1508            ::olai_store::ResourceFieldDescriptor {
1509                name: "agent_skill_type",
1510                role: ::olai_store::FieldRole::Data,
1511            },
1512            ::olai_store::ResourceFieldDescriptor {
1513                name: "description",
1514                role: ::olai_store::FieldRole::Data,
1515            },
1516            ::olai_store::ResourceFieldDescriptor {
1517                name: "license",
1518                role: ::olai_store::FieldRole::Data,
1519            },
1520            ::olai_store::ResourceFieldDescriptor {
1521                name: "allowed_tools",
1522                role: ::olai_store::FieldRole::Data,
1523            },
1524            ::olai_store::ResourceFieldDescriptor {
1525                name: "metadata",
1526                role: ::olai_store::FieldRole::Data,
1527            },
1528            ::olai_store::ResourceFieldDescriptor {
1529                name: "owner",
1530                role: ::olai_store::FieldRole::Data,
1531            },
1532            ::olai_store::ResourceFieldDescriptor {
1533                name: "comment",
1534                role: ::olai_store::FieldRole::Data,
1535            },
1536            ::olai_store::ResourceFieldDescriptor {
1537                name: "created_at",
1538                role: ::olai_store::FieldRole::Managed,
1539            },
1540            ::olai_store::ResourceFieldDescriptor {
1541                name: "created_by",
1542                role: ::olai_store::FieldRole::Managed,
1543            },
1544            ::olai_store::ResourceFieldDescriptor {
1545                name: "updated_at",
1546                role: ::olai_store::FieldRole::Managed,
1547            },
1548            ::olai_store::ResourceFieldDescriptor {
1549                name: "updated_by",
1550                role: ::olai_store::FieldRole::Managed,
1551            },
1552            ::olai_store::ResourceFieldDescriptor {
1553                name: "metastore_id",
1554                role: ::olai_store::FieldRole::Data,
1555            },
1556        ],
1557        path_names: &["catalog_name", "schema_name", "name"],
1558        parent_label: Some(ObjectLabel::Catalog),
1559    },
1560    ::olai_store::ResourceTypeDescriptor {
1561        label: ObjectLabel::Catalog,
1562        fields: &[
1563            ::olai_store::ResourceFieldDescriptor {
1564                name: "name",
1565                role: ::olai_store::FieldRole::Data,
1566            },
1567            ::olai_store::ResourceFieldDescriptor {
1568                name: "id",
1569                role: ::olai_store::FieldRole::Identifier,
1570            },
1571            ::olai_store::ResourceFieldDescriptor {
1572                name: "owner",
1573                role: ::olai_store::FieldRole::Data,
1574            },
1575            ::olai_store::ResourceFieldDescriptor {
1576                name: "comment",
1577                role: ::olai_store::FieldRole::Data,
1578            },
1579            ::olai_store::ResourceFieldDescriptor {
1580                name: "properties",
1581                role: ::olai_store::FieldRole::Data,
1582            },
1583            ::olai_store::ResourceFieldDescriptor {
1584                name: "storage_root",
1585                role: ::olai_store::FieldRole::Data,
1586            },
1587            ::olai_store::ResourceFieldDescriptor {
1588                name: "provider_name",
1589                role: ::olai_store::FieldRole::Data,
1590            },
1591            ::olai_store::ResourceFieldDescriptor {
1592                name: "share_name",
1593                role: ::olai_store::FieldRole::Data,
1594            },
1595            ::olai_store::ResourceFieldDescriptor {
1596                name: "catalog_type",
1597                role: ::olai_store::FieldRole::Data,
1598            },
1599            ::olai_store::ResourceFieldDescriptor {
1600                name: "storage_location",
1601                role: ::olai_store::FieldRole::Data,
1602            },
1603            ::olai_store::ResourceFieldDescriptor {
1604                name: "created_at",
1605                role: ::olai_store::FieldRole::Managed,
1606            },
1607            ::olai_store::ResourceFieldDescriptor {
1608                name: "created_by",
1609                role: ::olai_store::FieldRole::Managed,
1610            },
1611            ::olai_store::ResourceFieldDescriptor {
1612                name: "updated_at",
1613                role: ::olai_store::FieldRole::Managed,
1614            },
1615            ::olai_store::ResourceFieldDescriptor {
1616                name: "updated_by",
1617                role: ::olai_store::FieldRole::Managed,
1618            },
1619            ::olai_store::ResourceFieldDescriptor {
1620                name: "browse_only",
1621                role: ::olai_store::FieldRole::Data,
1622            },
1623        ],
1624        path_names: &["name"],
1625        parent_label: None,
1626    },
1627    ::olai_store::ResourceTypeDescriptor {
1628        label: ObjectLabel::Column,
1629        fields: &[
1630            ::olai_store::ResourceFieldDescriptor {
1631                name: "name",
1632                role: ::olai_store::FieldRole::Data,
1633            },
1634            ::olai_store::ResourceFieldDescriptor {
1635                name: "type_text",
1636                role: ::olai_store::FieldRole::Data,
1637            },
1638            ::olai_store::ResourceFieldDescriptor {
1639                name: "type_json",
1640                role: ::olai_store::FieldRole::Data,
1641            },
1642            ::olai_store::ResourceFieldDescriptor {
1643                name: "position",
1644                role: ::olai_store::FieldRole::Data,
1645            },
1646            ::olai_store::ResourceFieldDescriptor {
1647                name: "type_name",
1648                role: ::olai_store::FieldRole::Data,
1649            },
1650            ::olai_store::ResourceFieldDescriptor {
1651                name: "type_precision",
1652                role: ::olai_store::FieldRole::Data,
1653            },
1654            ::olai_store::ResourceFieldDescriptor {
1655                name: "type_scale",
1656                role: ::olai_store::FieldRole::Data,
1657            },
1658            ::olai_store::ResourceFieldDescriptor {
1659                name: "type_interval_type",
1660                role: ::olai_store::FieldRole::Data,
1661            },
1662            ::olai_store::ResourceFieldDescriptor {
1663                name: "comment",
1664                role: ::olai_store::FieldRole::Data,
1665            },
1666            ::olai_store::ResourceFieldDescriptor {
1667                name: "nullable",
1668                role: ::olai_store::FieldRole::Data,
1669            },
1670            ::olai_store::ResourceFieldDescriptor {
1671                name: "partition_index",
1672                role: ::olai_store::FieldRole::Data,
1673            },
1674            ::olai_store::ResourceFieldDescriptor {
1675                name: "column_id",
1676                role: ::olai_store::FieldRole::Identifier,
1677            },
1678        ],
1679        path_names: &["name"],
1680        parent_label: None,
1681    },
1682    ::olai_store::ResourceTypeDescriptor {
1683        label: ObjectLabel::Credential,
1684        fields: &[
1685            ::olai_store::ResourceFieldDescriptor {
1686                name: "name",
1687                role: ::olai_store::FieldRole::Data,
1688            },
1689            ::olai_store::ResourceFieldDescriptor {
1690                name: "id",
1691                role: ::olai_store::FieldRole::Identifier,
1692            },
1693            ::olai_store::ResourceFieldDescriptor {
1694                name: "purpose",
1695                role: ::olai_store::FieldRole::Data,
1696            },
1697            ::olai_store::ResourceFieldDescriptor {
1698                name: "read_only",
1699                role: ::olai_store::FieldRole::Data,
1700            },
1701            ::olai_store::ResourceFieldDescriptor {
1702                name: "comment",
1703                role: ::olai_store::FieldRole::Data,
1704            },
1705            ::olai_store::ResourceFieldDescriptor {
1706                name: "owner",
1707                role: ::olai_store::FieldRole::Data,
1708            },
1709            ::olai_store::ResourceFieldDescriptor {
1710                name: "created_at",
1711                role: ::olai_store::FieldRole::Managed,
1712            },
1713            ::olai_store::ResourceFieldDescriptor {
1714                name: "created_by",
1715                role: ::olai_store::FieldRole::Managed,
1716            },
1717            ::olai_store::ResourceFieldDescriptor {
1718                name: "updated_at",
1719                role: ::olai_store::FieldRole::Managed,
1720            },
1721            ::olai_store::ResourceFieldDescriptor {
1722                name: "updated_by",
1723                role: ::olai_store::FieldRole::Managed,
1724            },
1725            ::olai_store::ResourceFieldDescriptor {
1726                name: "used_for_managed_storage",
1727                role: ::olai_store::FieldRole::Data,
1728            },
1729            ::olai_store::ResourceFieldDescriptor {
1730                name: "full_name",
1731                role: ::olai_store::FieldRole::Data,
1732            },
1733            ::olai_store::ResourceFieldDescriptor {
1734                name: "azure_service_principal",
1735                role: ::olai_store::FieldRole::Sensitive,
1736            },
1737            ::olai_store::ResourceFieldDescriptor {
1738                name: "azure_managed_identity",
1739                role: ::olai_store::FieldRole::Sensitive,
1740            },
1741            ::olai_store::ResourceFieldDescriptor {
1742                name: "azure_storage_key",
1743                role: ::olai_store::FieldRole::Sensitive,
1744            },
1745            ::olai_store::ResourceFieldDescriptor {
1746                name: "aws_iam_role",
1747                role: ::olai_store::FieldRole::Sensitive,
1748            },
1749            ::olai_store::ResourceFieldDescriptor {
1750                name: "databricks_gcp_service_account",
1751                role: ::olai_store::FieldRole::Sensitive,
1752            },
1753        ],
1754        path_names: &["name"],
1755        parent_label: None,
1756    },
1757    ::olai_store::ResourceTypeDescriptor {
1758        label: ObjectLabel::ExternalLocation,
1759        fields: &[
1760            ::olai_store::ResourceFieldDescriptor {
1761                name: "name",
1762                role: ::olai_store::FieldRole::Data,
1763            },
1764            ::olai_store::ResourceFieldDescriptor {
1765                name: "url",
1766                role: ::olai_store::FieldRole::Data,
1767            },
1768            ::olai_store::ResourceFieldDescriptor {
1769                name: "credential_name",
1770                role: ::olai_store::FieldRole::Data,
1771            },
1772            ::olai_store::ResourceFieldDescriptor {
1773                name: "read_only",
1774                role: ::olai_store::FieldRole::Data,
1775            },
1776            ::olai_store::ResourceFieldDescriptor {
1777                name: "comment",
1778                role: ::olai_store::FieldRole::Data,
1779            },
1780            ::olai_store::ResourceFieldDescriptor {
1781                name: "owner",
1782                role: ::olai_store::FieldRole::Data,
1783            },
1784            ::olai_store::ResourceFieldDescriptor {
1785                name: "credential_id",
1786                role: ::olai_store::FieldRole::Data,
1787            },
1788            ::olai_store::ResourceFieldDescriptor {
1789                name: "created_at",
1790                role: ::olai_store::FieldRole::Managed,
1791            },
1792            ::olai_store::ResourceFieldDescriptor {
1793                name: "created_by",
1794                role: ::olai_store::FieldRole::Managed,
1795            },
1796            ::olai_store::ResourceFieldDescriptor {
1797                name: "updated_at",
1798                role: ::olai_store::FieldRole::Managed,
1799            },
1800            ::olai_store::ResourceFieldDescriptor {
1801                name: "updated_by",
1802                role: ::olai_store::FieldRole::Managed,
1803            },
1804            ::olai_store::ResourceFieldDescriptor {
1805                name: "browse_only",
1806                role: ::olai_store::FieldRole::Data,
1807            },
1808            ::olai_store::ResourceFieldDescriptor {
1809                name: "external_location_id",
1810                role: ::olai_store::FieldRole::Identifier,
1811            },
1812        ],
1813        path_names: &["name"],
1814        parent_label: None,
1815    },
1816    ::olai_store::ResourceTypeDescriptor {
1817        label: ObjectLabel::Function,
1818        fields: &[
1819            ::olai_store::ResourceFieldDescriptor {
1820                name: "name",
1821                role: ::olai_store::FieldRole::Data,
1822            },
1823            ::olai_store::ResourceFieldDescriptor {
1824                name: "catalog_name",
1825                role: ::olai_store::FieldRole::Data,
1826            },
1827            ::olai_store::ResourceFieldDescriptor {
1828                name: "schema_name",
1829                role: ::olai_store::FieldRole::Data,
1830            },
1831            ::olai_store::ResourceFieldDescriptor {
1832                name: "full_name",
1833                role: ::olai_store::FieldRole::Data,
1834            },
1835            ::olai_store::ResourceFieldDescriptor {
1836                name: "data_type",
1837                role: ::olai_store::FieldRole::Data,
1838            },
1839            ::olai_store::ResourceFieldDescriptor {
1840                name: "full_data_type",
1841                role: ::olai_store::FieldRole::Data,
1842            },
1843            ::olai_store::ResourceFieldDescriptor {
1844                name: "input_params",
1845                role: ::olai_store::FieldRole::Data,
1846            },
1847            ::olai_store::ResourceFieldDescriptor {
1848                name: "return_params",
1849                role: ::olai_store::FieldRole::Data,
1850            },
1851            ::olai_store::ResourceFieldDescriptor {
1852                name: "routine_body_language",
1853                role: ::olai_store::FieldRole::Data,
1854            },
1855            ::olai_store::ResourceFieldDescriptor {
1856                name: "routine_definition",
1857                role: ::olai_store::FieldRole::Data,
1858            },
1859            ::olai_store::ResourceFieldDescriptor {
1860                name: "routine_dependencies",
1861                role: ::olai_store::FieldRole::Data,
1862            },
1863            ::olai_store::ResourceFieldDescriptor {
1864                name: "parameter_style",
1865                role: ::olai_store::FieldRole::Data,
1866            },
1867            ::olai_store::ResourceFieldDescriptor {
1868                name: "is_deterministic",
1869                role: ::olai_store::FieldRole::Data,
1870            },
1871            ::olai_store::ResourceFieldDescriptor {
1872                name: "sql_data_access",
1873                role: ::olai_store::FieldRole::Data,
1874            },
1875            ::olai_store::ResourceFieldDescriptor {
1876                name: "is_null_call",
1877                role: ::olai_store::FieldRole::Data,
1878            },
1879            ::olai_store::ResourceFieldDescriptor {
1880                name: "security_type",
1881                role: ::olai_store::FieldRole::Data,
1882            },
1883            ::olai_store::ResourceFieldDescriptor {
1884                name: "specific_name",
1885                role: ::olai_store::FieldRole::Data,
1886            },
1887            ::olai_store::ResourceFieldDescriptor {
1888                name: "routine_body",
1889                role: ::olai_store::FieldRole::Data,
1890            },
1891            ::olai_store::ResourceFieldDescriptor {
1892                name: "comment",
1893                role: ::olai_store::FieldRole::Data,
1894            },
1895            ::olai_store::ResourceFieldDescriptor {
1896                name: "properties",
1897                role: ::olai_store::FieldRole::Data,
1898            },
1899            ::olai_store::ResourceFieldDescriptor {
1900                name: "owner",
1901                role: ::olai_store::FieldRole::Data,
1902            },
1903            ::olai_store::ResourceFieldDescriptor {
1904                name: "function_id",
1905                role: ::olai_store::FieldRole::Identifier,
1906            },
1907            ::olai_store::ResourceFieldDescriptor {
1908                name: "created_at",
1909                role: ::olai_store::FieldRole::Managed,
1910            },
1911            ::olai_store::ResourceFieldDescriptor {
1912                name: "created_by",
1913                role: ::olai_store::FieldRole::Managed,
1914            },
1915            ::olai_store::ResourceFieldDescriptor {
1916                name: "updated_at",
1917                role: ::olai_store::FieldRole::Managed,
1918            },
1919            ::olai_store::ResourceFieldDescriptor {
1920                name: "updated_by",
1921                role: ::olai_store::FieldRole::Managed,
1922            },
1923        ],
1924        path_names: &["catalog_name", "schema_name", "name"],
1925        parent_label: Some(ObjectLabel::Catalog),
1926    },
1927    ::olai_store::ResourceTypeDescriptor {
1928        label: ObjectLabel::ModelVersion,
1929        fields: &[
1930            ::olai_store::ResourceFieldDescriptor {
1931                name: "model_name",
1932                role: ::olai_store::FieldRole::Data,
1933            },
1934            ::olai_store::ResourceFieldDescriptor {
1935                name: "catalog_name",
1936                role: ::olai_store::FieldRole::Data,
1937            },
1938            ::olai_store::ResourceFieldDescriptor {
1939                name: "schema_name",
1940                role: ::olai_store::FieldRole::Data,
1941            },
1942            ::olai_store::ResourceFieldDescriptor {
1943                name: "version",
1944                role: ::olai_store::FieldRole::Data,
1945            },
1946            ::olai_store::ResourceFieldDescriptor {
1947                name: "source",
1948                role: ::olai_store::FieldRole::Data,
1949            },
1950            ::olai_store::ResourceFieldDescriptor {
1951                name: "run_id",
1952                role: ::olai_store::FieldRole::Data,
1953            },
1954            ::olai_store::ResourceFieldDescriptor {
1955                name: "status",
1956                role: ::olai_store::FieldRole::Data,
1957            },
1958            ::olai_store::ResourceFieldDescriptor {
1959                name: "storage_location",
1960                role: ::olai_store::FieldRole::Data,
1961            },
1962            ::olai_store::ResourceFieldDescriptor {
1963                name: "comment",
1964                role: ::olai_store::FieldRole::Data,
1965            },
1966            ::olai_store::ResourceFieldDescriptor {
1967                name: "id",
1968                role: ::olai_store::FieldRole::Identifier,
1969            },
1970            ::olai_store::ResourceFieldDescriptor {
1971                name: "created_at",
1972                role: ::olai_store::FieldRole::Managed,
1973            },
1974            ::olai_store::ResourceFieldDescriptor {
1975                name: "created_by",
1976                role: ::olai_store::FieldRole::Managed,
1977            },
1978            ::olai_store::ResourceFieldDescriptor {
1979                name: "updated_at",
1980                role: ::olai_store::FieldRole::Managed,
1981            },
1982            ::olai_store::ResourceFieldDescriptor {
1983                name: "updated_by",
1984                role: ::olai_store::FieldRole::Managed,
1985            },
1986            ::olai_store::ResourceFieldDescriptor {
1987                name: "metastore_id",
1988                role: ::olai_store::FieldRole::Data,
1989            },
1990            ::olai_store::ResourceFieldDescriptor {
1991                name: "browse_only",
1992                role: ::olai_store::FieldRole::Data,
1993            },
1994        ],
1995        path_names: &["catalog_name", "schema_name", "model_name", "version"],
1996        parent_label: None,
1997    },
1998    ::olai_store::ResourceTypeDescriptor {
1999        label: ObjectLabel::PolicyInfo,
2000        fields: &[
2001            ::olai_store::ResourceFieldDescriptor {
2002                name: "name",
2003                role: ::olai_store::FieldRole::Data,
2004            },
2005            ::olai_store::ResourceFieldDescriptor {
2006                name: "id",
2007                role: ::olai_store::FieldRole::Identifier,
2008            },
2009            ::olai_store::ResourceFieldDescriptor {
2010                name: "on_securable_type",
2011                role: ::olai_store::FieldRole::Data,
2012            },
2013            ::olai_store::ResourceFieldDescriptor {
2014                name: "on_securable_fullname",
2015                role: ::olai_store::FieldRole::Data,
2016            },
2017            ::olai_store::ResourceFieldDescriptor {
2018                name: "policy_type",
2019                role: ::olai_store::FieldRole::Data,
2020            },
2021            ::olai_store::ResourceFieldDescriptor {
2022                name: "to_principals",
2023                role: ::olai_store::FieldRole::Data,
2024            },
2025            ::olai_store::ResourceFieldDescriptor {
2026                name: "except_principals",
2027                role: ::olai_store::FieldRole::Data,
2028            },
2029            ::olai_store::ResourceFieldDescriptor {
2030                name: "when_condition",
2031                role: ::olai_store::FieldRole::Data,
2032            },
2033            ::olai_store::ResourceFieldDescriptor {
2034                name: "match_columns",
2035                role: ::olai_store::FieldRole::Data,
2036            },
2037            ::olai_store::ResourceFieldDescriptor {
2038                name: "comment",
2039                role: ::olai_store::FieldRole::Data,
2040            },
2041            ::olai_store::ResourceFieldDescriptor {
2042                name: "created_at",
2043                role: ::olai_store::FieldRole::Managed,
2044            },
2045            ::olai_store::ResourceFieldDescriptor {
2046                name: "updated_at",
2047                role: ::olai_store::FieldRole::Managed,
2048            },
2049            ::olai_store::ResourceFieldDescriptor {
2050                name: "function",
2051                role: ::olai_store::FieldRole::Data,
2052            },
2053        ],
2054        path_names: &["name"],
2055        parent_label: None,
2056    },
2057    ::olai_store::ResourceTypeDescriptor {
2058        label: ObjectLabel::Provider,
2059        fields: &[
2060            ::olai_store::ResourceFieldDescriptor {
2061                name: "id",
2062                role: ::olai_store::FieldRole::Identifier,
2063            },
2064            ::olai_store::ResourceFieldDescriptor {
2065                name: "name",
2066                role: ::olai_store::FieldRole::Data,
2067            },
2068            ::olai_store::ResourceFieldDescriptor {
2069                name: "authentication_type",
2070                role: ::olai_store::FieldRole::Data,
2071            },
2072            ::olai_store::ResourceFieldDescriptor {
2073                name: "owner",
2074                role: ::olai_store::FieldRole::Data,
2075            },
2076            ::olai_store::ResourceFieldDescriptor {
2077                name: "comment",
2078                role: ::olai_store::FieldRole::Data,
2079            },
2080            ::olai_store::ResourceFieldDescriptor {
2081                name: "recipient_profile_str",
2082                role: ::olai_store::FieldRole::Data,
2083            },
2084            ::olai_store::ResourceFieldDescriptor {
2085                name: "properties",
2086                role: ::olai_store::FieldRole::Data,
2087            },
2088            ::olai_store::ResourceFieldDescriptor {
2089                name: "created_at",
2090                role: ::olai_store::FieldRole::Managed,
2091            },
2092            ::olai_store::ResourceFieldDescriptor {
2093                name: "created_by",
2094                role: ::olai_store::FieldRole::Managed,
2095            },
2096            ::olai_store::ResourceFieldDescriptor {
2097                name: "updated_at",
2098                role: ::olai_store::FieldRole::Managed,
2099            },
2100            ::olai_store::ResourceFieldDescriptor {
2101                name: "updated_by",
2102                role: ::olai_store::FieldRole::Managed,
2103            },
2104        ],
2105        path_names: &["name"],
2106        parent_label: None,
2107    },
2108    ::olai_store::ResourceTypeDescriptor {
2109        label: ObjectLabel::Recipient,
2110        fields: &[
2111            ::olai_store::ResourceFieldDescriptor {
2112                name: "id",
2113                role: ::olai_store::FieldRole::Identifier,
2114            },
2115            ::olai_store::ResourceFieldDescriptor {
2116                name: "name",
2117                role: ::olai_store::FieldRole::Data,
2118            },
2119            ::olai_store::ResourceFieldDescriptor {
2120                name: "authentication_type",
2121                role: ::olai_store::FieldRole::Data,
2122            },
2123            ::olai_store::ResourceFieldDescriptor {
2124                name: "owner",
2125                role: ::olai_store::FieldRole::Data,
2126            },
2127            ::olai_store::ResourceFieldDescriptor {
2128                name: "comment",
2129                role: ::olai_store::FieldRole::Data,
2130            },
2131            ::olai_store::ResourceFieldDescriptor {
2132                name: "properties",
2133                role: ::olai_store::FieldRole::Data,
2134            },
2135            ::olai_store::ResourceFieldDescriptor {
2136                name: "created_at",
2137                role: ::olai_store::FieldRole::Managed,
2138            },
2139            ::olai_store::ResourceFieldDescriptor {
2140                name: "created_by",
2141                role: ::olai_store::FieldRole::Managed,
2142            },
2143            ::olai_store::ResourceFieldDescriptor {
2144                name: "tokens",
2145                role: ::olai_store::FieldRole::Data,
2146            },
2147            ::olai_store::ResourceFieldDescriptor {
2148                name: "updated_at",
2149                role: ::olai_store::FieldRole::Managed,
2150            },
2151            ::olai_store::ResourceFieldDescriptor {
2152                name: "updated_by",
2153                role: ::olai_store::FieldRole::Managed,
2154            },
2155        ],
2156        path_names: &["name"],
2157        parent_label: None,
2158    },
2159    ::olai_store::ResourceTypeDescriptor {
2160        label: ObjectLabel::RegisteredModel,
2161        fields: &[
2162            ::olai_store::ResourceFieldDescriptor {
2163                name: "name",
2164                role: ::olai_store::FieldRole::Data,
2165            },
2166            ::olai_store::ResourceFieldDescriptor {
2167                name: "catalog_name",
2168                role: ::olai_store::FieldRole::Data,
2169            },
2170            ::olai_store::ResourceFieldDescriptor {
2171                name: "schema_name",
2172                role: ::olai_store::FieldRole::Data,
2173            },
2174            ::olai_store::ResourceFieldDescriptor {
2175                name: "full_name",
2176                role: ::olai_store::FieldRole::Data,
2177            },
2178            ::olai_store::ResourceFieldDescriptor {
2179                name: "storage_location",
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: "id",
2192                role: ::olai_store::FieldRole::Identifier,
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: "updated_at",
2204                role: ::olai_store::FieldRole::Managed,
2205            },
2206            ::olai_store::ResourceFieldDescriptor {
2207                name: "updated_by",
2208                role: ::olai_store::FieldRole::Managed,
2209            },
2210            ::olai_store::ResourceFieldDescriptor {
2211                name: "metastore_id",
2212                role: ::olai_store::FieldRole::Data,
2213            },
2214            ::olai_store::ResourceFieldDescriptor {
2215                name: "browse_only",
2216                role: ::olai_store::FieldRole::Data,
2217            },
2218        ],
2219        path_names: &["catalog_name", "schema_name", "name"],
2220        parent_label: Some(ObjectLabel::Catalog),
2221    },
2222    ::olai_store::ResourceTypeDescriptor {
2223        label: ObjectLabel::Schema,
2224        fields: &[
2225            ::olai_store::ResourceFieldDescriptor {
2226                name: "name",
2227                role: ::olai_store::FieldRole::Data,
2228            },
2229            ::olai_store::ResourceFieldDescriptor {
2230                name: "catalog_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: "comment",
2239                role: ::olai_store::FieldRole::Data,
2240            },
2241            ::olai_store::ResourceFieldDescriptor {
2242                name: "properties",
2243                role: ::olai_store::FieldRole::Data,
2244            },
2245            ::olai_store::ResourceFieldDescriptor {
2246                name: "owner",
2247                role: ::olai_store::FieldRole::Data,
2248            },
2249            ::olai_store::ResourceFieldDescriptor {
2250                name: "created_at",
2251                role: ::olai_store::FieldRole::Managed,
2252            },
2253            ::olai_store::ResourceFieldDescriptor {
2254                name: "created_by",
2255                role: ::olai_store::FieldRole::Managed,
2256            },
2257            ::olai_store::ResourceFieldDescriptor {
2258                name: "updated_at",
2259                role: ::olai_store::FieldRole::Managed,
2260            },
2261            ::olai_store::ResourceFieldDescriptor {
2262                name: "updated_by",
2263                role: ::olai_store::FieldRole::Managed,
2264            },
2265            ::olai_store::ResourceFieldDescriptor {
2266                name: "schema_id",
2267                role: ::olai_store::FieldRole::Identifier,
2268            },
2269            ::olai_store::ResourceFieldDescriptor {
2270                name: "storage_root",
2271                role: ::olai_store::FieldRole::Data,
2272            },
2273            ::olai_store::ResourceFieldDescriptor {
2274                name: "storage_location",
2275                role: ::olai_store::FieldRole::Data,
2276            },
2277        ],
2278        path_names: &["catalog_name", "name"],
2279        parent_label: Some(ObjectLabel::Catalog),
2280    },
2281    ::olai_store::ResourceTypeDescriptor {
2282        label: ObjectLabel::Share,
2283        fields: &[
2284            ::olai_store::ResourceFieldDescriptor {
2285                name: "id",
2286                role: ::olai_store::FieldRole::Identifier,
2287            },
2288            ::olai_store::ResourceFieldDescriptor {
2289                name: "name",
2290                role: ::olai_store::FieldRole::Data,
2291            },
2292            ::olai_store::ResourceFieldDescriptor {
2293                name: "objects",
2294                role: ::olai_store::FieldRole::Data,
2295            },
2296            ::olai_store::ResourceFieldDescriptor {
2297                name: "owner",
2298                role: ::olai_store::FieldRole::Data,
2299            },
2300            ::olai_store::ResourceFieldDescriptor {
2301                name: "comment",
2302                role: ::olai_store::FieldRole::Data,
2303            },
2304            ::olai_store::ResourceFieldDescriptor {
2305                name: "storage_location",
2306                role: ::olai_store::FieldRole::Data,
2307            },
2308            ::olai_store::ResourceFieldDescriptor {
2309                name: "storage_root",
2310                role: ::olai_store::FieldRole::Data,
2311            },
2312            ::olai_store::ResourceFieldDescriptor {
2313                name: "created_at",
2314                role: ::olai_store::FieldRole::Managed,
2315            },
2316            ::olai_store::ResourceFieldDescriptor {
2317                name: "created_by",
2318                role: ::olai_store::FieldRole::Managed,
2319            },
2320            ::olai_store::ResourceFieldDescriptor {
2321                name: "updated_at",
2322                role: ::olai_store::FieldRole::Managed,
2323            },
2324            ::olai_store::ResourceFieldDescriptor {
2325                name: "updated_by",
2326                role: ::olai_store::FieldRole::Managed,
2327            },
2328        ],
2329        path_names: &["name"],
2330        parent_label: None,
2331    },
2332    ::olai_store::ResourceTypeDescriptor {
2333        label: ObjectLabel::StagingTable,
2334        fields: &[
2335            ::olai_store::ResourceFieldDescriptor {
2336                name: "id",
2337                role: ::olai_store::FieldRole::Identifier,
2338            },
2339            ::olai_store::ResourceFieldDescriptor {
2340                name: "name",
2341                role: ::olai_store::FieldRole::Data,
2342            },
2343            ::olai_store::ResourceFieldDescriptor {
2344                name: "schema_name",
2345                role: ::olai_store::FieldRole::Data,
2346            },
2347            ::olai_store::ResourceFieldDescriptor {
2348                name: "catalog_name",
2349                role: ::olai_store::FieldRole::Data,
2350            },
2351            ::olai_store::ResourceFieldDescriptor {
2352                name: "staging_location",
2353                role: ::olai_store::FieldRole::Data,
2354            },
2355            ::olai_store::ResourceFieldDescriptor {
2356                name: "created_by",
2357                role: ::olai_store::FieldRole::Managed,
2358            },
2359            ::olai_store::ResourceFieldDescriptor {
2360                name: "stage_committed",
2361                role: ::olai_store::FieldRole::Data,
2362            },
2363            ::olai_store::ResourceFieldDescriptor {
2364                name: "created_at",
2365                role: ::olai_store::FieldRole::Managed,
2366            },
2367        ],
2368        path_names: &["name"],
2369        parent_label: None,
2370    },
2371    ::olai_store::ResourceTypeDescriptor {
2372        label: ObjectLabel::Table,
2373        fields: &[
2374            ::olai_store::ResourceFieldDescriptor {
2375                name: "name",
2376                role: ::olai_store::FieldRole::Data,
2377            },
2378            ::olai_store::ResourceFieldDescriptor {
2379                name: "catalog_name",
2380                role: ::olai_store::FieldRole::Data,
2381            },
2382            ::olai_store::ResourceFieldDescriptor {
2383                name: "schema_name",
2384                role: ::olai_store::FieldRole::Data,
2385            },
2386            ::olai_store::ResourceFieldDescriptor {
2387                name: "table_type",
2388                role: ::olai_store::FieldRole::Data,
2389            },
2390            ::olai_store::ResourceFieldDescriptor {
2391                name: "data_source_format",
2392                role: ::olai_store::FieldRole::Data,
2393            },
2394            ::olai_store::ResourceFieldDescriptor {
2395                name: "columns",
2396                role: ::olai_store::FieldRole::Data,
2397            },
2398            ::olai_store::ResourceFieldDescriptor {
2399                name: "storage_location",
2400                role: ::olai_store::FieldRole::Data,
2401            },
2402            ::olai_store::ResourceFieldDescriptor {
2403                name: "view_definition",
2404                role: ::olai_store::FieldRole::Data,
2405            },
2406            ::olai_store::ResourceFieldDescriptor {
2407                name: "view_dependencies",
2408                role: ::olai_store::FieldRole::Data,
2409            },
2410            ::olai_store::ResourceFieldDescriptor {
2411                name: "owner",
2412                role: ::olai_store::FieldRole::Data,
2413            },
2414            ::olai_store::ResourceFieldDescriptor {
2415                name: "comment",
2416                role: ::olai_store::FieldRole::Data,
2417            },
2418            ::olai_store::ResourceFieldDescriptor {
2419                name: "properties",
2420                role: ::olai_store::FieldRole::Data,
2421            },
2422            ::olai_store::ResourceFieldDescriptor {
2423                name: "storage_credential_name",
2424                role: ::olai_store::FieldRole::Data,
2425            },
2426            ::olai_store::ResourceFieldDescriptor {
2427                name: "full_name",
2428                role: ::olai_store::FieldRole::Data,
2429            },
2430            ::olai_store::ResourceFieldDescriptor {
2431                name: "created_at",
2432                role: ::olai_store::FieldRole::Managed,
2433            },
2434            ::olai_store::ResourceFieldDescriptor {
2435                name: "created_by",
2436                role: ::olai_store::FieldRole::Managed,
2437            },
2438            ::olai_store::ResourceFieldDescriptor {
2439                name: "updated_at",
2440                role: ::olai_store::FieldRole::Managed,
2441            },
2442            ::olai_store::ResourceFieldDescriptor {
2443                name: "updated_by",
2444                role: ::olai_store::FieldRole::Managed,
2445            },
2446            ::olai_store::ResourceFieldDescriptor {
2447                name: "deleted_at",
2448                role: ::olai_store::FieldRole::Data,
2449            },
2450            ::olai_store::ResourceFieldDescriptor {
2451                name: "table_id",
2452                role: ::olai_store::FieldRole::Identifier,
2453            },
2454        ],
2455        path_names: &["catalog_name", "schema_name", "name"],
2456        parent_label: Some(ObjectLabel::Catalog),
2457    },
2458    ::olai_store::ResourceTypeDescriptor {
2459        label: ObjectLabel::TagPolicy,
2460        fields: &[
2461            ::olai_store::ResourceFieldDescriptor {
2462                name: "tag_key",
2463                role: ::olai_store::FieldRole::Data,
2464            },
2465            ::olai_store::ResourceFieldDescriptor {
2466                name: "description",
2467                role: ::olai_store::FieldRole::Data,
2468            },
2469            ::olai_store::ResourceFieldDescriptor {
2470                name: "values",
2471                role: ::olai_store::FieldRole::Data,
2472            },
2473            ::olai_store::ResourceFieldDescriptor {
2474                name: "id",
2475                role: ::olai_store::FieldRole::Identifier,
2476            },
2477            ::olai_store::ResourceFieldDescriptor {
2478                name: "created_at",
2479                role: ::olai_store::FieldRole::Managed,
2480            },
2481            ::olai_store::ResourceFieldDescriptor {
2482                name: "updated_at",
2483                role: ::olai_store::FieldRole::Managed,
2484            },
2485        ],
2486        path_names: &["tag_key"],
2487        parent_label: None,
2488    },
2489    ::olai_store::ResourceTypeDescriptor {
2490        label: ObjectLabel::Volume,
2491        fields: &[
2492            ::olai_store::ResourceFieldDescriptor {
2493                name: "name",
2494                role: ::olai_store::FieldRole::Data,
2495            },
2496            ::olai_store::ResourceFieldDescriptor {
2497                name: "catalog_name",
2498                role: ::olai_store::FieldRole::Data,
2499            },
2500            ::olai_store::ResourceFieldDescriptor {
2501                name: "schema_name",
2502                role: ::olai_store::FieldRole::Data,
2503            },
2504            ::olai_store::ResourceFieldDescriptor {
2505                name: "full_name",
2506                role: ::olai_store::FieldRole::Data,
2507            },
2508            ::olai_store::ResourceFieldDescriptor {
2509                name: "storage_location",
2510                role: ::olai_store::FieldRole::Data,
2511            },
2512            ::olai_store::ResourceFieldDescriptor {
2513                name: "volume_id",
2514                role: ::olai_store::FieldRole::Identifier,
2515            },
2516            ::olai_store::ResourceFieldDescriptor {
2517                name: "volume_type",
2518                role: ::olai_store::FieldRole::Data,
2519            },
2520            ::olai_store::ResourceFieldDescriptor {
2521                name: "owner",
2522                role: ::olai_store::FieldRole::Data,
2523            },
2524            ::olai_store::ResourceFieldDescriptor {
2525                name: "comment",
2526                role: ::olai_store::FieldRole::Data,
2527            },
2528            ::olai_store::ResourceFieldDescriptor {
2529                name: "created_at",
2530                role: ::olai_store::FieldRole::Managed,
2531            },
2532            ::olai_store::ResourceFieldDescriptor {
2533                name: "created_by",
2534                role: ::olai_store::FieldRole::Managed,
2535            },
2536            ::olai_store::ResourceFieldDescriptor {
2537                name: "updated_at",
2538                role: ::olai_store::FieldRole::Managed,
2539            },
2540            ::olai_store::ResourceFieldDescriptor {
2541                name: "updated_by",
2542                role: ::olai_store::FieldRole::Managed,
2543            },
2544            ::olai_store::ResourceFieldDescriptor {
2545                name: "browse_only",
2546                role: ::olai_store::FieldRole::Data,
2547            },
2548            ::olai_store::ResourceFieldDescriptor {
2549                name: "metastore_id",
2550                role: ::olai_store::FieldRole::Data,
2551            },
2552        ],
2553        path_names: &["catalog_name", "schema_name", "name"],
2554        parent_label: Some(ObjectLabel::Catalog),
2555    },
2556];