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    Provider(super::providers::v1::Provider),
14    Recipient(super::recipients::v1::Recipient),
15    Schema(super::schemas::v1::Schema),
16    Share(super::shares::v1::Share),
17    StagingTable(super::staging_tables::v1::StagingTable),
18    Table(super::tables::v1::Table),
19    TagPolicy(super::tags::v1::TagPolicy),
20    Volume(super::volumes::v1::Volume),
21}
22/// Discriminant label for each resource type.
23#[derive(
24    ::strum::AsRefStr,
25    ::strum::Display,
26    ::strum::EnumIter,
27    ::strum::EnumString,
28    ::serde::Serialize,
29    ::serde::Deserialize,
30    Hash,
31    Clone,
32    Copy,
33    Debug,
34    PartialEq,
35    Eq,
36    PartialOrd,
37    Ord,
38)]
39#[strum(serialize_all = "snake_case", ascii_case_insensitive)]
40#[serde(rename_all = "snake_case")]
41#[cfg_attr(feature = "sqlx", derive(::sqlx::Type))]
42#[cfg_attr(
43    feature = "sqlx",
44    sqlx(type_name = "object_label", rename_all = "snake_case")
45)]
46pub enum ObjectLabel {
47    Agent,
48    AgentSkill,
49    Catalog,
50    Column,
51    Credential,
52    ExternalLocation,
53    Function,
54    Provider,
55    Recipient,
56    Schema,
57    Share,
58    StagingTable,
59    Table,
60    TagPolicy,
61    Volume,
62}
63impl Resource {
64    /// Return the discriminant label for this resource.
65    pub fn resource_label(&self) -> &ObjectLabel {
66        match self {
67            Resource::Agent(_) => &ObjectLabel::Agent,
68            Resource::AgentSkill(_) => &ObjectLabel::AgentSkill,
69            Resource::Catalog(_) => &ObjectLabel::Catalog,
70            Resource::Column(_) => &ObjectLabel::Column,
71            Resource::Credential(_) => &ObjectLabel::Credential,
72            Resource::ExternalLocation(_) => &ObjectLabel::ExternalLocation,
73            Resource::Function(_) => &ObjectLabel::Function,
74            Resource::Provider(_) => &ObjectLabel::Provider,
75            Resource::Recipient(_) => &ObjectLabel::Recipient,
76            Resource::Schema(_) => &ObjectLabel::Schema,
77            Resource::Share(_) => &ObjectLabel::Share,
78            Resource::StagingTable(_) => &ObjectLabel::StagingTable,
79            Resource::Table(_) => &ObjectLabel::Table,
80            Resource::TagPolicy(_) => &ObjectLabel::TagPolicy,
81            Resource::Volume(_) => &ObjectLabel::Volume,
82        }
83    }
84}
85impl From<super::agents::v0alpha1::Agent> for Resource {
86    fn from(v: super::agents::v0alpha1::Agent) -> Self {
87        Resource::Agent(v)
88    }
89}
90impl TryFrom<Resource> for super::agents::v0alpha1::Agent {
91    type Error = crate::Error;
92    fn try_from(r: Resource) -> Result<Self, Self::Error> {
93        match r {
94            Resource::Agent(v) => Ok(v),
95            _ => Err(<crate::Error>::generic(concat!(
96                "Resource is not a ",
97                stringify!(Agent)
98            ))),
99        }
100    }
101}
102impl From<super::agent_skills::v0alpha1::AgentSkill> for Resource {
103    fn from(v: super::agent_skills::v0alpha1::AgentSkill) -> Self {
104        Resource::AgentSkill(v)
105    }
106}
107impl TryFrom<Resource> for super::agent_skills::v0alpha1::AgentSkill {
108    type Error = crate::Error;
109    fn try_from(r: Resource) -> Result<Self, Self::Error> {
110        match r {
111            Resource::AgentSkill(v) => Ok(v),
112            _ => Err(<crate::Error>::generic(concat!(
113                "Resource is not a ",
114                stringify!(AgentSkill)
115            ))),
116        }
117    }
118}
119impl From<super::catalogs::v1::Catalog> for Resource {
120    fn from(v: super::catalogs::v1::Catalog) -> Self {
121        Resource::Catalog(v)
122    }
123}
124impl TryFrom<Resource> for super::catalogs::v1::Catalog {
125    type Error = crate::Error;
126    fn try_from(r: Resource) -> Result<Self, Self::Error> {
127        match r {
128            Resource::Catalog(v) => Ok(v),
129            _ => Err(<crate::Error>::generic(concat!(
130                "Resource is not a ",
131                stringify!(Catalog)
132            ))),
133        }
134    }
135}
136impl From<super::tables::v1::Column> for Resource {
137    fn from(v: super::tables::v1::Column) -> Self {
138        Resource::Column(v)
139    }
140}
141impl TryFrom<Resource> for super::tables::v1::Column {
142    type Error = crate::Error;
143    fn try_from(r: Resource) -> Result<Self, Self::Error> {
144        match r {
145            Resource::Column(v) => Ok(v),
146            _ => Err(<crate::Error>::generic(concat!(
147                "Resource is not a ",
148                stringify!(Column)
149            ))),
150        }
151    }
152}
153impl From<super::credentials::v1::Credential> for Resource {
154    fn from(v: super::credentials::v1::Credential) -> Self {
155        Resource::Credential(v)
156    }
157}
158impl TryFrom<Resource> for super::credentials::v1::Credential {
159    type Error = crate::Error;
160    fn try_from(r: Resource) -> Result<Self, Self::Error> {
161        match r {
162            Resource::Credential(v) => Ok(v),
163            _ => Err(<crate::Error>::generic(concat!(
164                "Resource is not a ",
165                stringify!(Credential)
166            ))),
167        }
168    }
169}
170impl From<super::external_locations::v1::ExternalLocation> for Resource {
171    fn from(v: super::external_locations::v1::ExternalLocation) -> Self {
172        Resource::ExternalLocation(v)
173    }
174}
175impl TryFrom<Resource> for super::external_locations::v1::ExternalLocation {
176    type Error = crate::Error;
177    fn try_from(r: Resource) -> Result<Self, Self::Error> {
178        match r {
179            Resource::ExternalLocation(v) => Ok(v),
180            _ => Err(<crate::Error>::generic(concat!(
181                "Resource is not a ",
182                stringify!(ExternalLocation)
183            ))),
184        }
185    }
186}
187impl From<super::functions::v1::Function> for Resource {
188    fn from(v: super::functions::v1::Function) -> Self {
189        Resource::Function(v)
190    }
191}
192impl TryFrom<Resource> for super::functions::v1::Function {
193    type Error = crate::Error;
194    fn try_from(r: Resource) -> Result<Self, Self::Error> {
195        match r {
196            Resource::Function(v) => Ok(v),
197            _ => Err(<crate::Error>::generic(concat!(
198                "Resource is not a ",
199                stringify!(Function)
200            ))),
201        }
202    }
203}
204impl From<super::providers::v1::Provider> for Resource {
205    fn from(v: super::providers::v1::Provider) -> Self {
206        Resource::Provider(v)
207    }
208}
209impl TryFrom<Resource> for super::providers::v1::Provider {
210    type Error = crate::Error;
211    fn try_from(r: Resource) -> Result<Self, Self::Error> {
212        match r {
213            Resource::Provider(v) => Ok(v),
214            _ => Err(<crate::Error>::generic(concat!(
215                "Resource is not a ",
216                stringify!(Provider)
217            ))),
218        }
219    }
220}
221impl From<super::recipients::v1::Recipient> for Resource {
222    fn from(v: super::recipients::v1::Recipient) -> Self {
223        Resource::Recipient(v)
224    }
225}
226impl TryFrom<Resource> for super::recipients::v1::Recipient {
227    type Error = crate::Error;
228    fn try_from(r: Resource) -> Result<Self, Self::Error> {
229        match r {
230            Resource::Recipient(v) => Ok(v),
231            _ => Err(<crate::Error>::generic(concat!(
232                "Resource is not a ",
233                stringify!(Recipient)
234            ))),
235        }
236    }
237}
238impl From<super::schemas::v1::Schema> for Resource {
239    fn from(v: super::schemas::v1::Schema) -> Self {
240        Resource::Schema(v)
241    }
242}
243impl TryFrom<Resource> for super::schemas::v1::Schema {
244    type Error = crate::Error;
245    fn try_from(r: Resource) -> Result<Self, Self::Error> {
246        match r {
247            Resource::Schema(v) => Ok(v),
248            _ => Err(<crate::Error>::generic(concat!(
249                "Resource is not a ",
250                stringify!(Schema)
251            ))),
252        }
253    }
254}
255impl From<super::shares::v1::Share> for Resource {
256    fn from(v: super::shares::v1::Share) -> Self {
257        Resource::Share(v)
258    }
259}
260impl TryFrom<Resource> for super::shares::v1::Share {
261    type Error = crate::Error;
262    fn try_from(r: Resource) -> Result<Self, Self::Error> {
263        match r {
264            Resource::Share(v) => Ok(v),
265            _ => Err(<crate::Error>::generic(concat!(
266                "Resource is not a ",
267                stringify!(Share)
268            ))),
269        }
270    }
271}
272impl From<super::staging_tables::v1::StagingTable> for Resource {
273    fn from(v: super::staging_tables::v1::StagingTable) -> Self {
274        Resource::StagingTable(v)
275    }
276}
277impl TryFrom<Resource> for super::staging_tables::v1::StagingTable {
278    type Error = crate::Error;
279    fn try_from(r: Resource) -> Result<Self, Self::Error> {
280        match r {
281            Resource::StagingTable(v) => Ok(v),
282            _ => Err(<crate::Error>::generic(concat!(
283                "Resource is not a ",
284                stringify!(StagingTable)
285            ))),
286        }
287    }
288}
289impl From<super::tables::v1::Table> for Resource {
290    fn from(v: super::tables::v1::Table) -> Self {
291        Resource::Table(v)
292    }
293}
294impl TryFrom<Resource> for super::tables::v1::Table {
295    type Error = crate::Error;
296    fn try_from(r: Resource) -> Result<Self, Self::Error> {
297        match r {
298            Resource::Table(v) => Ok(v),
299            _ => Err(<crate::Error>::generic(concat!(
300                "Resource is not a ",
301                stringify!(Table)
302            ))),
303        }
304    }
305}
306impl From<super::tags::v1::TagPolicy> for Resource {
307    fn from(v: super::tags::v1::TagPolicy) -> Self {
308        Resource::TagPolicy(v)
309    }
310}
311impl TryFrom<Resource> for super::tags::v1::TagPolicy {
312    type Error = crate::Error;
313    fn try_from(r: Resource) -> Result<Self, Self::Error> {
314        match r {
315            Resource::TagPolicy(v) => Ok(v),
316            _ => Err(<crate::Error>::generic(concat!(
317                "Resource is not a ",
318                stringify!(TagPolicy)
319            ))),
320        }
321    }
322}
323impl From<super::volumes::v1::Volume> for Resource {
324    fn from(v: super::volumes::v1::Volume) -> Self {
325        Resource::Volume(v)
326    }
327}
328impl TryFrom<Resource> for super::volumes::v1::Volume {
329    type Error = crate::Error;
330    fn try_from(r: Resource) -> Result<Self, Self::Error> {
331        match r {
332            Resource::Volume(v) => Ok(v),
333            _ => Err(<crate::Error>::generic(concat!(
334                "Resource is not a ",
335                stringify!(Volume)
336            ))),
337        }
338    }
339}
340use crate::Error;
341use crate::models::object::Object;
342use crate::models::resources::{ResourceExt, ResourceIdent, ResourceName, ResourceRef};
343impl TryFrom<Object> for super::agents::v0alpha1::Agent {
344    type Error = Error;
345    fn try_from(object: Object) -> Result<Self, Self::Error> {
346        let props = object
347            .properties
348            .ok_or_else(|| Error::generic("expected properties"))?;
349        let mut res: super::agents::v0alpha1::Agent = ::serde_json::from_value(props)?;
350        res.agent_id = object.id.hyphenated().to_string();
351        Ok(res)
352    }
353}
354impl TryFrom<super::agents::v0alpha1::Agent> for Object {
355    type Error = Error;
356    fn try_from(obj: super::agents::v0alpha1::Agent) -> Result<Self, Self::Error> {
357        let id = ::uuid::Uuid::parse_str(&obj.agent_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
358        Ok(Object {
359            id,
360            name: obj.resource_name(),
361            label: ObjectLabel::Agent,
362            properties: Some(::serde_json::to_value(obj)?),
363            updated_at: None,
364            created_at: chrono::Utc::now(),
365        })
366    }
367}
368impl ResourceExt for super::agents::v0alpha1::Agent {
369    fn resource_name(&self) -> ResourceName {
370        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
371    }
372    fn resource_ref(&self) -> ResourceRef {
373        ::uuid::Uuid::parse_str(&self.agent_id)
374            .ok()
375            .map(ResourceRef::Uuid)
376            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
377    }
378    fn resource_ident(&self) -> ResourceIdent {
379        (ObjectLabel::Agent).to_ident(self.resource_ref())
380    }
381}
382impl TryFrom<Object> for super::agent_skills::v0alpha1::AgentSkill {
383    type Error = Error;
384    fn try_from(object: Object) -> Result<Self, Self::Error> {
385        let props = object
386            .properties
387            .ok_or_else(|| Error::generic("expected properties"))?;
388        let mut res: super::agent_skills::v0alpha1::AgentSkill = ::serde_json::from_value(props)?;
389        res.agent_skill_id = object.id.hyphenated().to_string();
390        Ok(res)
391    }
392}
393impl TryFrom<super::agent_skills::v0alpha1::AgentSkill> for Object {
394    type Error = Error;
395    fn try_from(obj: super::agent_skills::v0alpha1::AgentSkill) -> Result<Self, Self::Error> {
396        let id =
397            ::uuid::Uuid::parse_str(&obj.agent_skill_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
398        Ok(Object {
399            id,
400            name: obj.resource_name(),
401            label: ObjectLabel::AgentSkill,
402            properties: Some(::serde_json::to_value(obj)?),
403            updated_at: None,
404            created_at: chrono::Utc::now(),
405        })
406    }
407}
408impl ResourceExt for super::agent_skills::v0alpha1::AgentSkill {
409    fn resource_name(&self) -> ResourceName {
410        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
411    }
412    fn resource_ref(&self) -> ResourceRef {
413        ::uuid::Uuid::parse_str(&self.agent_skill_id)
414            .ok()
415            .map(ResourceRef::Uuid)
416            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
417    }
418    fn resource_ident(&self) -> ResourceIdent {
419        (ObjectLabel::AgentSkill).to_ident(self.resource_ref())
420    }
421}
422impl TryFrom<Object> for super::catalogs::v1::Catalog {
423    type Error = Error;
424    fn try_from(object: Object) -> Result<Self, Self::Error> {
425        let props = object
426            .properties
427            .ok_or_else(|| Error::generic("expected properties"))?;
428        let mut res: super::catalogs::v1::Catalog = ::serde_json::from_value(props)?;
429        res.id = Some(object.id.hyphenated().to_string());
430        Ok(res)
431    }
432}
433impl TryFrom<super::catalogs::v1::Catalog> for Object {
434    type Error = Error;
435    fn try_from(obj: super::catalogs::v1::Catalog) -> Result<Self, Self::Error> {
436        let id = obj
437            .id
438            .as_ref()
439            .map(|id| ::uuid::Uuid::parse_str(id))
440            .transpose()?
441            .unwrap_or_else(::uuid::Uuid::nil);
442        Ok(Object {
443            id,
444            name: obj.resource_name(),
445            label: ObjectLabel::Catalog,
446            properties: Some(::serde_json::to_value(obj)?),
447            updated_at: None,
448            created_at: chrono::Utc::now(),
449        })
450    }
451}
452impl ResourceExt for super::catalogs::v1::Catalog {
453    fn resource_name(&self) -> ResourceName {
454        ResourceName::new([&self.name])
455    }
456    fn resource_ref(&self) -> ResourceRef {
457        self.id
458            .as_ref()
459            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
460            .map(ResourceRef::Uuid)
461            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
462    }
463    fn resource_ident(&self) -> ResourceIdent {
464        (ObjectLabel::Catalog).to_ident(self.resource_ref())
465    }
466}
467impl TryFrom<Object> for super::tables::v1::Column {
468    type Error = Error;
469    fn try_from(object: Object) -> Result<Self, Self::Error> {
470        let props = object
471            .properties
472            .ok_or_else(|| Error::generic("expected properties"))?;
473        let mut res: super::tables::v1::Column = ::serde_json::from_value(props)?;
474        res.column_id = Some(object.id.hyphenated().to_string());
475        Ok(res)
476    }
477}
478impl TryFrom<super::tables::v1::Column> for Object {
479    type Error = Error;
480    fn try_from(obj: super::tables::v1::Column) -> Result<Self, Self::Error> {
481        let id = obj
482            .column_id
483            .as_ref()
484            .map(|id| ::uuid::Uuid::parse_str(id))
485            .transpose()?
486            .unwrap_or_else(::uuid::Uuid::nil);
487        Ok(Object {
488            id,
489            name: obj.resource_name(),
490            label: ObjectLabel::Column,
491            properties: Some(::serde_json::to_value(obj)?),
492            updated_at: None,
493            created_at: chrono::Utc::now(),
494        })
495    }
496}
497impl ResourceExt for super::tables::v1::Column {
498    fn resource_name(&self) -> ResourceName {
499        ResourceName::new([&self.name])
500    }
501    fn resource_ref(&self) -> ResourceRef {
502        self.column_id
503            .as_ref()
504            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
505            .map(ResourceRef::Uuid)
506            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
507    }
508    fn resource_ident(&self) -> ResourceIdent {
509        (ObjectLabel::Column).to_ident(self.resource_ref())
510    }
511}
512impl TryFrom<Object> for super::credentials::v1::Credential {
513    type Error = Error;
514    fn try_from(object: Object) -> Result<Self, Self::Error> {
515        let props = object
516            .properties
517            .ok_or_else(|| Error::generic("expected properties"))?;
518        let mut res: super::credentials::v1::Credential = ::serde_json::from_value(props)?;
519        res.id = Some(object.id.hyphenated().to_string());
520        Ok(res)
521    }
522}
523impl TryFrom<super::credentials::v1::Credential> for Object {
524    type Error = Error;
525    fn try_from(obj: super::credentials::v1::Credential) -> Result<Self, Self::Error> {
526        let id = obj
527            .id
528            .as_ref()
529            .map(|id| ::uuid::Uuid::parse_str(id))
530            .transpose()?
531            .unwrap_or_else(::uuid::Uuid::nil);
532        Ok(Object {
533            id,
534            name: obj.resource_name(),
535            label: ObjectLabel::Credential,
536            properties: Some(::serde_json::to_value(obj)?),
537            updated_at: None,
538            created_at: chrono::Utc::now(),
539        })
540    }
541}
542impl ResourceExt for super::credentials::v1::Credential {
543    fn resource_name(&self) -> ResourceName {
544        ResourceName::new([&self.name])
545    }
546    fn resource_ref(&self) -> ResourceRef {
547        self.id
548            .as_ref()
549            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
550            .map(ResourceRef::Uuid)
551            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
552    }
553    fn resource_ident(&self) -> ResourceIdent {
554        (ObjectLabel::Credential).to_ident(self.resource_ref())
555    }
556}
557impl TryFrom<Object> for super::external_locations::v1::ExternalLocation {
558    type Error = Error;
559    fn try_from(object: Object) -> Result<Self, Self::Error> {
560        let props = object
561            .properties
562            .ok_or_else(|| Error::generic("expected properties"))?;
563        let mut res: super::external_locations::v1::ExternalLocation =
564            ::serde_json::from_value(props)?;
565        res.external_location_id = Some(object.id.hyphenated().to_string());
566        Ok(res)
567    }
568}
569impl TryFrom<super::external_locations::v1::ExternalLocation> for Object {
570    type Error = Error;
571    fn try_from(obj: super::external_locations::v1::ExternalLocation) -> Result<Self, Self::Error> {
572        let id = obj
573            .external_location_id
574            .as_ref()
575            .map(|id| ::uuid::Uuid::parse_str(id))
576            .transpose()?
577            .unwrap_or_else(::uuid::Uuid::nil);
578        Ok(Object {
579            id,
580            name: obj.resource_name(),
581            label: ObjectLabel::ExternalLocation,
582            properties: Some(::serde_json::to_value(obj)?),
583            updated_at: None,
584            created_at: chrono::Utc::now(),
585        })
586    }
587}
588impl ResourceExt for super::external_locations::v1::ExternalLocation {
589    fn resource_name(&self) -> ResourceName {
590        ResourceName::new([&self.name])
591    }
592    fn resource_ref(&self) -> ResourceRef {
593        self.external_location_id
594            .as_ref()
595            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
596            .map(ResourceRef::Uuid)
597            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
598    }
599    fn resource_ident(&self) -> ResourceIdent {
600        (ObjectLabel::ExternalLocation).to_ident(self.resource_ref())
601    }
602}
603impl TryFrom<Object> for super::functions::v1::Function {
604    type Error = Error;
605    fn try_from(object: Object) -> Result<Self, Self::Error> {
606        let props = object
607            .properties
608            .ok_or_else(|| Error::generic("expected properties"))?;
609        let mut res: super::functions::v1::Function = ::serde_json::from_value(props)?;
610        res.function_id = Some(object.id.hyphenated().to_string());
611        Ok(res)
612    }
613}
614impl TryFrom<super::functions::v1::Function> for Object {
615    type Error = Error;
616    fn try_from(obj: super::functions::v1::Function) -> Result<Self, Self::Error> {
617        let id = obj
618            .function_id
619            .as_ref()
620            .map(|id| ::uuid::Uuid::parse_str(id))
621            .transpose()?
622            .unwrap_or_else(::uuid::Uuid::nil);
623        Ok(Object {
624            id,
625            name: obj.resource_name(),
626            label: ObjectLabel::Function,
627            properties: Some(::serde_json::to_value(obj)?),
628            updated_at: None,
629            created_at: chrono::Utc::now(),
630        })
631    }
632}
633impl ResourceExt for super::functions::v1::Function {
634    fn resource_name(&self) -> ResourceName {
635        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
636    }
637    fn resource_ref(&self) -> ResourceRef {
638        self.function_id
639            .as_ref()
640            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
641            .map(ResourceRef::Uuid)
642            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
643    }
644    fn resource_ident(&self) -> ResourceIdent {
645        (ObjectLabel::Function).to_ident(self.resource_ref())
646    }
647}
648impl TryFrom<Object> for super::providers::v1::Provider {
649    type Error = Error;
650    fn try_from(object: Object) -> Result<Self, Self::Error> {
651        let props = object
652            .properties
653            .ok_or_else(|| Error::generic("expected properties"))?;
654        let mut res: super::providers::v1::Provider = ::serde_json::from_value(props)?;
655        res.id = Some(object.id.hyphenated().to_string());
656        Ok(res)
657    }
658}
659impl TryFrom<super::providers::v1::Provider> for Object {
660    type Error = Error;
661    fn try_from(obj: super::providers::v1::Provider) -> Result<Self, Self::Error> {
662        let id = obj
663            .id
664            .as_ref()
665            .map(|id| ::uuid::Uuid::parse_str(id))
666            .transpose()?
667            .unwrap_or_else(::uuid::Uuid::nil);
668        Ok(Object {
669            id,
670            name: obj.resource_name(),
671            label: ObjectLabel::Provider,
672            properties: Some(::serde_json::to_value(obj)?),
673            updated_at: None,
674            created_at: chrono::Utc::now(),
675        })
676    }
677}
678impl ResourceExt for super::providers::v1::Provider {
679    fn resource_name(&self) -> ResourceName {
680        ResourceName::new([&self.name])
681    }
682    fn resource_ref(&self) -> ResourceRef {
683        self.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::Provider).to_ident(self.resource_ref())
691    }
692}
693impl TryFrom<Object> for super::recipients::v1::Recipient {
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::recipients::v1::Recipient = ::serde_json::from_value(props)?;
700        res.id = Some(object.id.hyphenated().to_string());
701        Ok(res)
702    }
703}
704impl TryFrom<super::recipients::v1::Recipient> for Object {
705    type Error = Error;
706    fn try_from(obj: super::recipients::v1::Recipient) -> Result<Self, Self::Error> {
707        let id = obj
708            .id
709            .as_ref()
710            .map(|id| ::uuid::Uuid::parse_str(id))
711            .transpose()?
712            .unwrap_or_else(::uuid::Uuid::nil);
713        Ok(Object {
714            id,
715            name: obj.resource_name(),
716            label: ObjectLabel::Recipient,
717            properties: Some(::serde_json::to_value(obj)?),
718            updated_at: None,
719            created_at: chrono::Utc::now(),
720        })
721    }
722}
723impl ResourceExt for super::recipients::v1::Recipient {
724    fn resource_name(&self) -> ResourceName {
725        ResourceName::new([&self.name])
726    }
727    fn resource_ref(&self) -> ResourceRef {
728        self.id
729            .as_ref()
730            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
731            .map(ResourceRef::Uuid)
732            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
733    }
734    fn resource_ident(&self) -> ResourceIdent {
735        (ObjectLabel::Recipient).to_ident(self.resource_ref())
736    }
737}
738impl TryFrom<Object> for super::schemas::v1::Schema {
739    type Error = Error;
740    fn try_from(object: Object) -> Result<Self, Self::Error> {
741        let props = object
742            .properties
743            .ok_or_else(|| Error::generic("expected properties"))?;
744        let mut res: super::schemas::v1::Schema = ::serde_json::from_value(props)?;
745        res.schema_id = Some(object.id.hyphenated().to_string());
746        Ok(res)
747    }
748}
749impl TryFrom<super::schemas::v1::Schema> for Object {
750    type Error = Error;
751    fn try_from(obj: super::schemas::v1::Schema) -> Result<Self, Self::Error> {
752        let id = obj
753            .schema_id
754            .as_ref()
755            .map(|id| ::uuid::Uuid::parse_str(id))
756            .transpose()?
757            .unwrap_or_else(::uuid::Uuid::nil);
758        Ok(Object {
759            id,
760            name: obj.resource_name(),
761            label: ObjectLabel::Schema,
762            properties: Some(::serde_json::to_value(obj)?),
763            updated_at: None,
764            created_at: chrono::Utc::now(),
765        })
766    }
767}
768impl ResourceExt for super::schemas::v1::Schema {
769    fn resource_name(&self) -> ResourceName {
770        ResourceName::new([&self.catalog_name, &self.name])
771    }
772    fn resource_ref(&self) -> ResourceRef {
773        self.schema_id
774            .as_ref()
775            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
776            .map(ResourceRef::Uuid)
777            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
778    }
779    fn resource_ident(&self) -> ResourceIdent {
780        (ObjectLabel::Schema).to_ident(self.resource_ref())
781    }
782}
783impl TryFrom<Object> for super::shares::v1::Share {
784    type Error = Error;
785    fn try_from(object: Object) -> Result<Self, Self::Error> {
786        let props = object
787            .properties
788            .ok_or_else(|| Error::generic("expected properties"))?;
789        let mut res: super::shares::v1::Share = ::serde_json::from_value(props)?;
790        res.id = Some(object.id.hyphenated().to_string());
791        Ok(res)
792    }
793}
794impl TryFrom<super::shares::v1::Share> for Object {
795    type Error = Error;
796    fn try_from(obj: super::shares::v1::Share) -> Result<Self, Self::Error> {
797        let id = obj
798            .id
799            .as_ref()
800            .map(|id| ::uuid::Uuid::parse_str(id))
801            .transpose()?
802            .unwrap_or_else(::uuid::Uuid::nil);
803        Ok(Object {
804            id,
805            name: obj.resource_name(),
806            label: ObjectLabel::Share,
807            properties: Some(::serde_json::to_value(obj)?),
808            updated_at: None,
809            created_at: chrono::Utc::now(),
810        })
811    }
812}
813impl ResourceExt for super::shares::v1::Share {
814    fn resource_name(&self) -> ResourceName {
815        ResourceName::new([&self.name])
816    }
817    fn resource_ref(&self) -> ResourceRef {
818        self.id
819            .as_ref()
820            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
821            .map(ResourceRef::Uuid)
822            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
823    }
824    fn resource_ident(&self) -> ResourceIdent {
825        (ObjectLabel::Share).to_ident(self.resource_ref())
826    }
827}
828impl TryFrom<Object> for super::staging_tables::v1::StagingTable {
829    type Error = Error;
830    fn try_from(object: Object) -> Result<Self, Self::Error> {
831        let props = object
832            .properties
833            .ok_or_else(|| Error::generic("expected properties"))?;
834        let mut res: super::staging_tables::v1::StagingTable = ::serde_json::from_value(props)?;
835        res.id = object.id.hyphenated().to_string();
836        Ok(res)
837    }
838}
839impl TryFrom<super::staging_tables::v1::StagingTable> for Object {
840    type Error = Error;
841    fn try_from(obj: super::staging_tables::v1::StagingTable) -> Result<Self, Self::Error> {
842        let id = ::uuid::Uuid::parse_str(&obj.id).unwrap_or_else(|_| ::uuid::Uuid::nil());
843        Ok(Object {
844            id,
845            name: obj.resource_name(),
846            label: ObjectLabel::StagingTable,
847            properties: Some(::serde_json::to_value(obj)?),
848            updated_at: None,
849            created_at: chrono::Utc::now(),
850        })
851    }
852}
853impl ResourceExt for super::staging_tables::v1::StagingTable {
854    fn resource_name(&self) -> ResourceName {
855        ResourceName::new([&self.name])
856    }
857    fn resource_ref(&self) -> ResourceRef {
858        ::uuid::Uuid::parse_str(&self.id)
859            .ok()
860            .map(ResourceRef::Uuid)
861            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
862    }
863    fn resource_ident(&self) -> ResourceIdent {
864        (ObjectLabel::StagingTable).to_ident(self.resource_ref())
865    }
866}
867impl TryFrom<Object> for super::tables::v1::Table {
868    type Error = Error;
869    fn try_from(object: Object) -> Result<Self, Self::Error> {
870        let props = object
871            .properties
872            .ok_or_else(|| Error::generic("expected properties"))?;
873        let mut res: super::tables::v1::Table = ::serde_json::from_value(props)?;
874        res.table_id = Some(object.id.hyphenated().to_string());
875        Ok(res)
876    }
877}
878impl TryFrom<super::tables::v1::Table> for Object {
879    type Error = Error;
880    fn try_from(obj: super::tables::v1::Table) -> Result<Self, Self::Error> {
881        let id = obj
882            .table_id
883            .as_ref()
884            .map(|id| ::uuid::Uuid::parse_str(id))
885            .transpose()?
886            .unwrap_or_else(::uuid::Uuid::nil);
887        Ok(Object {
888            id,
889            name: obj.resource_name(),
890            label: ObjectLabel::Table,
891            properties: Some(::serde_json::to_value(obj)?),
892            updated_at: None,
893            created_at: chrono::Utc::now(),
894        })
895    }
896}
897impl ResourceExt for super::tables::v1::Table {
898    fn resource_name(&self) -> ResourceName {
899        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
900    }
901    fn resource_ref(&self) -> ResourceRef {
902        self.table_id
903            .as_ref()
904            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
905            .map(ResourceRef::Uuid)
906            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
907    }
908    fn resource_ident(&self) -> ResourceIdent {
909        (ObjectLabel::Table).to_ident(self.resource_ref())
910    }
911}
912impl TryFrom<Object> for super::tags::v1::TagPolicy {
913    type Error = Error;
914    fn try_from(object: Object) -> Result<Self, Self::Error> {
915        let props = object
916            .properties
917            .ok_or_else(|| Error::generic("expected properties"))?;
918        let mut res: super::tags::v1::TagPolicy = ::serde_json::from_value(props)?;
919        res.id = Some(object.id.hyphenated().to_string());
920        Ok(res)
921    }
922}
923impl TryFrom<super::tags::v1::TagPolicy> for Object {
924    type Error = Error;
925    fn try_from(obj: super::tags::v1::TagPolicy) -> Result<Self, Self::Error> {
926        let id = obj
927            .id
928            .as_ref()
929            .map(|id| ::uuid::Uuid::parse_str(id))
930            .transpose()?
931            .unwrap_or_else(::uuid::Uuid::nil);
932        Ok(Object {
933            id,
934            name: obj.resource_name(),
935            label: ObjectLabel::TagPolicy,
936            properties: Some(::serde_json::to_value(obj)?),
937            updated_at: None,
938            created_at: chrono::Utc::now(),
939        })
940    }
941}
942impl ResourceExt for super::tags::v1::TagPolicy {
943    fn resource_name(&self) -> ResourceName {
944        ResourceName::new([&self.tag_key])
945    }
946    fn resource_ref(&self) -> ResourceRef {
947        self.id
948            .as_ref()
949            .and_then(|id| ::uuid::Uuid::parse_str(id).ok())
950            .map(ResourceRef::Uuid)
951            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
952    }
953    fn resource_ident(&self) -> ResourceIdent {
954        (ObjectLabel::TagPolicy).to_ident(self.resource_ref())
955    }
956}
957impl TryFrom<Object> for super::volumes::v1::Volume {
958    type Error = Error;
959    fn try_from(object: Object) -> Result<Self, Self::Error> {
960        let props = object
961            .properties
962            .ok_or_else(|| Error::generic("expected properties"))?;
963        let mut res: super::volumes::v1::Volume = ::serde_json::from_value(props)?;
964        res.volume_id = object.id.hyphenated().to_string();
965        Ok(res)
966    }
967}
968impl TryFrom<super::volumes::v1::Volume> for Object {
969    type Error = Error;
970    fn try_from(obj: super::volumes::v1::Volume) -> Result<Self, Self::Error> {
971        let id = ::uuid::Uuid::parse_str(&obj.volume_id).unwrap_or_else(|_| ::uuid::Uuid::nil());
972        Ok(Object {
973            id,
974            name: obj.resource_name(),
975            label: ObjectLabel::Volume,
976            properties: Some(::serde_json::to_value(obj)?),
977            updated_at: None,
978            created_at: chrono::Utc::now(),
979        })
980    }
981}
982impl ResourceExt for super::volumes::v1::Volume {
983    fn resource_name(&self) -> ResourceName {
984        ResourceName::new([&self.catalog_name, &self.schema_name, &self.name])
985    }
986    fn resource_ref(&self) -> ResourceRef {
987        ::uuid::Uuid::parse_str(&self.volume_id)
988            .ok()
989            .map(ResourceRef::Uuid)
990            .unwrap_or_else(|| ResourceRef::Name(self.resource_name()))
991    }
992    fn resource_ident(&self) -> ResourceIdent {
993        (ObjectLabel::Volume).to_ident(self.resource_ref())
994    }
995}
996impl super::agents::v0alpha1::Agent {
997    /// Returns the fully-qualified dot-separated name computed from component fields.
998    pub fn qualified_name(&self) -> String {
999        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1000    }
1001}
1002impl super::agent_skills::v0alpha1::AgentSkill {
1003    /// Returns the fully-qualified dot-separated name computed from component fields.
1004    pub fn qualified_name(&self) -> String {
1005        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1006    }
1007}
1008impl super::catalogs::v1::Catalog {
1009    /// Returns the fully-qualified dot-separated name computed from component fields.
1010    pub fn qualified_name(&self) -> String {
1011        self.name.clone()
1012    }
1013}
1014impl super::tables::v1::Column {
1015    /// Returns the fully-qualified dot-separated name computed from component fields.
1016    pub fn qualified_name(&self) -> String {
1017        self.name.clone()
1018    }
1019}
1020impl super::credentials::v1::Credential {
1021    /// Returns the fully-qualified dot-separated name computed from component fields.
1022    pub fn qualified_name(&self) -> String {
1023        self.name.clone()
1024    }
1025}
1026impl super::external_locations::v1::ExternalLocation {
1027    /// Returns the fully-qualified dot-separated name computed from component fields.
1028    pub fn qualified_name(&self) -> String {
1029        self.name.clone()
1030    }
1031}
1032impl super::functions::v1::Function {
1033    /// Returns the fully-qualified dot-separated name computed from component fields.
1034    pub fn qualified_name(&self) -> String {
1035        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1036    }
1037}
1038impl super::providers::v1::Provider {
1039    /// Returns the fully-qualified dot-separated name computed from component fields.
1040    pub fn qualified_name(&self) -> String {
1041        self.name.clone()
1042    }
1043}
1044impl super::recipients::v1::Recipient {
1045    /// Returns the fully-qualified dot-separated name computed from component fields.
1046    pub fn qualified_name(&self) -> String {
1047        self.name.clone()
1048    }
1049}
1050impl super::schemas::v1::Schema {
1051    /// Returns the fully-qualified dot-separated name computed from component fields.
1052    pub fn qualified_name(&self) -> String {
1053        format!("{}.{}", self.catalog_name, self.name)
1054    }
1055}
1056impl super::shares::v1::Share {
1057    /// Returns the fully-qualified dot-separated name computed from component fields.
1058    pub fn qualified_name(&self) -> String {
1059        self.name.clone()
1060    }
1061}
1062impl super::staging_tables::v1::StagingTable {
1063    /// Returns the fully-qualified dot-separated name computed from component fields.
1064    pub fn qualified_name(&self) -> String {
1065        self.name.clone()
1066    }
1067}
1068impl super::tables::v1::Table {
1069    /// Returns the fully-qualified dot-separated name computed from component fields.
1070    pub fn qualified_name(&self) -> String {
1071        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1072    }
1073}
1074impl super::tags::v1::TagPolicy {
1075    /// Returns the fully-qualified dot-separated name computed from component fields.
1076    pub fn qualified_name(&self) -> String {
1077        self.tag_key.clone()
1078    }
1079}
1080impl super::volumes::v1::Volume {
1081    /// Returns the fully-qualified dot-separated name computed from component fields.
1082    pub fn qualified_name(&self) -> String {
1083        format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1084    }
1085}
1086impl ::olai_store::Label for ObjectLabel {
1087    fn as_str(&self) -> &str {
1088        self.as_ref()
1089    }
1090}
1091/// Static resource type descriptors derived from proto annotations.
1092///
1093/// Each entry describes a resource type's fields (with roles: data, identifier,
1094/// sensitive, managed), hierarchical name components, and parent relationship.
1095///
1096/// Use `ResourceRegistry::from_static` to build a runtime registry from this data.
1097pub static RESOURCE_DESCRIPTORS: &[::olai_store::ResourceTypeDescriptor<ObjectLabel>] = &[
1098    ::olai_store::ResourceTypeDescriptor {
1099        label: ObjectLabel::Agent,
1100        fields: &[
1101            ::olai_store::ResourceFieldDescriptor {
1102                name: "name",
1103                role: ::olai_store::FieldRole::Data,
1104            },
1105            ::olai_store::ResourceFieldDescriptor {
1106                name: "catalog_name",
1107                role: ::olai_store::FieldRole::Data,
1108            },
1109            ::olai_store::ResourceFieldDescriptor {
1110                name: "schema_name",
1111                role: ::olai_store::FieldRole::Data,
1112            },
1113            ::olai_store::ResourceFieldDescriptor {
1114                name: "full_name",
1115                role: ::olai_store::FieldRole::Data,
1116            },
1117            ::olai_store::ResourceFieldDescriptor {
1118                name: "agent_id",
1119                role: ::olai_store::FieldRole::Identifier,
1120            },
1121            ::olai_store::ResourceFieldDescriptor {
1122                name: "invocation_protocol",
1123                role: ::olai_store::FieldRole::Data,
1124            },
1125            ::olai_store::ResourceFieldDescriptor {
1126                name: "endpoint",
1127                role: ::olai_store::FieldRole::Data,
1128            },
1129            ::olai_store::ResourceFieldDescriptor {
1130                name: "description",
1131                role: ::olai_store::FieldRole::Data,
1132            },
1133            ::olai_store::ResourceFieldDescriptor {
1134                name: "capabilities",
1135                role: ::olai_store::FieldRole::Data,
1136            },
1137            ::olai_store::ResourceFieldDescriptor {
1138                name: "input_schema",
1139                role: ::olai_store::FieldRole::Data,
1140            },
1141            ::olai_store::ResourceFieldDescriptor {
1142                name: "owner",
1143                role: ::olai_store::FieldRole::Data,
1144            },
1145            ::olai_store::ResourceFieldDescriptor {
1146                name: "comment",
1147                role: ::olai_store::FieldRole::Data,
1148            },
1149            ::olai_store::ResourceFieldDescriptor {
1150                name: "created_at",
1151                role: ::olai_store::FieldRole::Managed,
1152            },
1153            ::olai_store::ResourceFieldDescriptor {
1154                name: "created_by",
1155                role: ::olai_store::FieldRole::Managed,
1156            },
1157            ::olai_store::ResourceFieldDescriptor {
1158                name: "updated_at",
1159                role: ::olai_store::FieldRole::Managed,
1160            },
1161            ::olai_store::ResourceFieldDescriptor {
1162                name: "updated_by",
1163                role: ::olai_store::FieldRole::Managed,
1164            },
1165            ::olai_store::ResourceFieldDescriptor {
1166                name: "metastore_id",
1167                role: ::olai_store::FieldRole::Data,
1168            },
1169        ],
1170        path_names: &["catalog_name", "schema_name", "name"],
1171        parent_label: Some(ObjectLabel::Catalog),
1172    },
1173    ::olai_store::ResourceTypeDescriptor {
1174        label: ObjectLabel::AgentSkill,
1175        fields: &[
1176            ::olai_store::ResourceFieldDescriptor {
1177                name: "name",
1178                role: ::olai_store::FieldRole::Data,
1179            },
1180            ::olai_store::ResourceFieldDescriptor {
1181                name: "catalog_name",
1182                role: ::olai_store::FieldRole::Data,
1183            },
1184            ::olai_store::ResourceFieldDescriptor {
1185                name: "schema_name",
1186                role: ::olai_store::FieldRole::Data,
1187            },
1188            ::olai_store::ResourceFieldDescriptor {
1189                name: "full_name",
1190                role: ::olai_store::FieldRole::Data,
1191            },
1192            ::olai_store::ResourceFieldDescriptor {
1193                name: "storage_location",
1194                role: ::olai_store::FieldRole::Data,
1195            },
1196            ::olai_store::ResourceFieldDescriptor {
1197                name: "agent_skill_id",
1198                role: ::olai_store::FieldRole::Identifier,
1199            },
1200            ::olai_store::ResourceFieldDescriptor {
1201                name: "agent_skill_type",
1202                role: ::olai_store::FieldRole::Data,
1203            },
1204            ::olai_store::ResourceFieldDescriptor {
1205                name: "description",
1206                role: ::olai_store::FieldRole::Data,
1207            },
1208            ::olai_store::ResourceFieldDescriptor {
1209                name: "license",
1210                role: ::olai_store::FieldRole::Data,
1211            },
1212            ::olai_store::ResourceFieldDescriptor {
1213                name: "allowed_tools",
1214                role: ::olai_store::FieldRole::Data,
1215            },
1216            ::olai_store::ResourceFieldDescriptor {
1217                name: "metadata",
1218                role: ::olai_store::FieldRole::Data,
1219            },
1220            ::olai_store::ResourceFieldDescriptor {
1221                name: "owner",
1222                role: ::olai_store::FieldRole::Data,
1223            },
1224            ::olai_store::ResourceFieldDescriptor {
1225                name: "comment",
1226                role: ::olai_store::FieldRole::Data,
1227            },
1228            ::olai_store::ResourceFieldDescriptor {
1229                name: "created_at",
1230                role: ::olai_store::FieldRole::Managed,
1231            },
1232            ::olai_store::ResourceFieldDescriptor {
1233                name: "created_by",
1234                role: ::olai_store::FieldRole::Managed,
1235            },
1236            ::olai_store::ResourceFieldDescriptor {
1237                name: "updated_at",
1238                role: ::olai_store::FieldRole::Managed,
1239            },
1240            ::olai_store::ResourceFieldDescriptor {
1241                name: "updated_by",
1242                role: ::olai_store::FieldRole::Managed,
1243            },
1244            ::olai_store::ResourceFieldDescriptor {
1245                name: "metastore_id",
1246                role: ::olai_store::FieldRole::Data,
1247            },
1248        ],
1249        path_names: &["catalog_name", "schema_name", "name"],
1250        parent_label: Some(ObjectLabel::Catalog),
1251    },
1252    ::olai_store::ResourceTypeDescriptor {
1253        label: ObjectLabel::Catalog,
1254        fields: &[
1255            ::olai_store::ResourceFieldDescriptor {
1256                name: "name",
1257                role: ::olai_store::FieldRole::Data,
1258            },
1259            ::olai_store::ResourceFieldDescriptor {
1260                name: "id",
1261                role: ::olai_store::FieldRole::Identifier,
1262            },
1263            ::olai_store::ResourceFieldDescriptor {
1264                name: "owner",
1265                role: ::olai_store::FieldRole::Data,
1266            },
1267            ::olai_store::ResourceFieldDescriptor {
1268                name: "comment",
1269                role: ::olai_store::FieldRole::Data,
1270            },
1271            ::olai_store::ResourceFieldDescriptor {
1272                name: "properties",
1273                role: ::olai_store::FieldRole::Data,
1274            },
1275            ::olai_store::ResourceFieldDescriptor {
1276                name: "storage_root",
1277                role: ::olai_store::FieldRole::Data,
1278            },
1279            ::olai_store::ResourceFieldDescriptor {
1280                name: "provider_name",
1281                role: ::olai_store::FieldRole::Data,
1282            },
1283            ::olai_store::ResourceFieldDescriptor {
1284                name: "share_name",
1285                role: ::olai_store::FieldRole::Data,
1286            },
1287            ::olai_store::ResourceFieldDescriptor {
1288                name: "catalog_type",
1289                role: ::olai_store::FieldRole::Data,
1290            },
1291            ::olai_store::ResourceFieldDescriptor {
1292                name: "storage_location",
1293                role: ::olai_store::FieldRole::Data,
1294            },
1295            ::olai_store::ResourceFieldDescriptor {
1296                name: "created_at",
1297                role: ::olai_store::FieldRole::Managed,
1298            },
1299            ::olai_store::ResourceFieldDescriptor {
1300                name: "created_by",
1301                role: ::olai_store::FieldRole::Managed,
1302            },
1303            ::olai_store::ResourceFieldDescriptor {
1304                name: "updated_at",
1305                role: ::olai_store::FieldRole::Managed,
1306            },
1307            ::olai_store::ResourceFieldDescriptor {
1308                name: "updated_by",
1309                role: ::olai_store::FieldRole::Managed,
1310            },
1311            ::olai_store::ResourceFieldDescriptor {
1312                name: "browse_only",
1313                role: ::olai_store::FieldRole::Data,
1314            },
1315        ],
1316        path_names: &["name"],
1317        parent_label: None,
1318    },
1319    ::olai_store::ResourceTypeDescriptor {
1320        label: ObjectLabel::Column,
1321        fields: &[
1322            ::olai_store::ResourceFieldDescriptor {
1323                name: "name",
1324                role: ::olai_store::FieldRole::Data,
1325            },
1326            ::olai_store::ResourceFieldDescriptor {
1327                name: "type_text",
1328                role: ::olai_store::FieldRole::Data,
1329            },
1330            ::olai_store::ResourceFieldDescriptor {
1331                name: "type_json",
1332                role: ::olai_store::FieldRole::Data,
1333            },
1334            ::olai_store::ResourceFieldDescriptor {
1335                name: "position",
1336                role: ::olai_store::FieldRole::Data,
1337            },
1338            ::olai_store::ResourceFieldDescriptor {
1339                name: "type_name",
1340                role: ::olai_store::FieldRole::Data,
1341            },
1342            ::olai_store::ResourceFieldDescriptor {
1343                name: "type_precision",
1344                role: ::olai_store::FieldRole::Data,
1345            },
1346            ::olai_store::ResourceFieldDescriptor {
1347                name: "type_scale",
1348                role: ::olai_store::FieldRole::Data,
1349            },
1350            ::olai_store::ResourceFieldDescriptor {
1351                name: "type_interval_type",
1352                role: ::olai_store::FieldRole::Data,
1353            },
1354            ::olai_store::ResourceFieldDescriptor {
1355                name: "comment",
1356                role: ::olai_store::FieldRole::Data,
1357            },
1358            ::olai_store::ResourceFieldDescriptor {
1359                name: "nullable",
1360                role: ::olai_store::FieldRole::Data,
1361            },
1362            ::olai_store::ResourceFieldDescriptor {
1363                name: "partition_index",
1364                role: ::olai_store::FieldRole::Data,
1365            },
1366            ::olai_store::ResourceFieldDescriptor {
1367                name: "column_id",
1368                role: ::olai_store::FieldRole::Identifier,
1369            },
1370        ],
1371        path_names: &["name"],
1372        parent_label: None,
1373    },
1374    ::olai_store::ResourceTypeDescriptor {
1375        label: ObjectLabel::Credential,
1376        fields: &[
1377            ::olai_store::ResourceFieldDescriptor {
1378                name: "name",
1379                role: ::olai_store::FieldRole::Data,
1380            },
1381            ::olai_store::ResourceFieldDescriptor {
1382                name: "id",
1383                role: ::olai_store::FieldRole::Identifier,
1384            },
1385            ::olai_store::ResourceFieldDescriptor {
1386                name: "purpose",
1387                role: ::olai_store::FieldRole::Data,
1388            },
1389            ::olai_store::ResourceFieldDescriptor {
1390                name: "read_only",
1391                role: ::olai_store::FieldRole::Data,
1392            },
1393            ::olai_store::ResourceFieldDescriptor {
1394                name: "comment",
1395                role: ::olai_store::FieldRole::Data,
1396            },
1397            ::olai_store::ResourceFieldDescriptor {
1398                name: "owner",
1399                role: ::olai_store::FieldRole::Data,
1400            },
1401            ::olai_store::ResourceFieldDescriptor {
1402                name: "created_at",
1403                role: ::olai_store::FieldRole::Managed,
1404            },
1405            ::olai_store::ResourceFieldDescriptor {
1406                name: "created_by",
1407                role: ::olai_store::FieldRole::Managed,
1408            },
1409            ::olai_store::ResourceFieldDescriptor {
1410                name: "updated_at",
1411                role: ::olai_store::FieldRole::Managed,
1412            },
1413            ::olai_store::ResourceFieldDescriptor {
1414                name: "updated_by",
1415                role: ::olai_store::FieldRole::Managed,
1416            },
1417            ::olai_store::ResourceFieldDescriptor {
1418                name: "used_for_managed_storage",
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: "azure_service_principal",
1427                role: ::olai_store::FieldRole::Data,
1428            },
1429            ::olai_store::ResourceFieldDescriptor {
1430                name: "azure_managed_identity",
1431                role: ::olai_store::FieldRole::Data,
1432            },
1433            ::olai_store::ResourceFieldDescriptor {
1434                name: "azure_storage_key",
1435                role: ::olai_store::FieldRole::Data,
1436            },
1437            ::olai_store::ResourceFieldDescriptor {
1438                name: "aws_iam_role",
1439                role: ::olai_store::FieldRole::Data,
1440            },
1441            ::olai_store::ResourceFieldDescriptor {
1442                name: "databricks_gcp_service_account",
1443                role: ::olai_store::FieldRole::Data,
1444            },
1445        ],
1446        path_names: &["name"],
1447        parent_label: None,
1448    },
1449    ::olai_store::ResourceTypeDescriptor {
1450        label: ObjectLabel::ExternalLocation,
1451        fields: &[
1452            ::olai_store::ResourceFieldDescriptor {
1453                name: "name",
1454                role: ::olai_store::FieldRole::Data,
1455            },
1456            ::olai_store::ResourceFieldDescriptor {
1457                name: "url",
1458                role: ::olai_store::FieldRole::Data,
1459            },
1460            ::olai_store::ResourceFieldDescriptor {
1461                name: "credential_name",
1462                role: ::olai_store::FieldRole::Data,
1463            },
1464            ::olai_store::ResourceFieldDescriptor {
1465                name: "read_only",
1466                role: ::olai_store::FieldRole::Data,
1467            },
1468            ::olai_store::ResourceFieldDescriptor {
1469                name: "comment",
1470                role: ::olai_store::FieldRole::Data,
1471            },
1472            ::olai_store::ResourceFieldDescriptor {
1473                name: "owner",
1474                role: ::olai_store::FieldRole::Data,
1475            },
1476            ::olai_store::ResourceFieldDescriptor {
1477                name: "credential_id",
1478                role: ::olai_store::FieldRole::Data,
1479            },
1480            ::olai_store::ResourceFieldDescriptor {
1481                name: "created_at",
1482                role: ::olai_store::FieldRole::Managed,
1483            },
1484            ::olai_store::ResourceFieldDescriptor {
1485                name: "created_by",
1486                role: ::olai_store::FieldRole::Managed,
1487            },
1488            ::olai_store::ResourceFieldDescriptor {
1489                name: "updated_at",
1490                role: ::olai_store::FieldRole::Managed,
1491            },
1492            ::olai_store::ResourceFieldDescriptor {
1493                name: "updated_by",
1494                role: ::olai_store::FieldRole::Managed,
1495            },
1496            ::olai_store::ResourceFieldDescriptor {
1497                name: "browse_only",
1498                role: ::olai_store::FieldRole::Data,
1499            },
1500            ::olai_store::ResourceFieldDescriptor {
1501                name: "external_location_id",
1502                role: ::olai_store::FieldRole::Identifier,
1503            },
1504        ],
1505        path_names: &["name"],
1506        parent_label: None,
1507    },
1508    ::olai_store::ResourceTypeDescriptor {
1509        label: ObjectLabel::Function,
1510        fields: &[
1511            ::olai_store::ResourceFieldDescriptor {
1512                name: "name",
1513                role: ::olai_store::FieldRole::Data,
1514            },
1515            ::olai_store::ResourceFieldDescriptor {
1516                name: "catalog_name",
1517                role: ::olai_store::FieldRole::Data,
1518            },
1519            ::olai_store::ResourceFieldDescriptor {
1520                name: "schema_name",
1521                role: ::olai_store::FieldRole::Data,
1522            },
1523            ::olai_store::ResourceFieldDescriptor {
1524                name: "full_name",
1525                role: ::olai_store::FieldRole::Data,
1526            },
1527            ::olai_store::ResourceFieldDescriptor {
1528                name: "data_type",
1529                role: ::olai_store::FieldRole::Data,
1530            },
1531            ::olai_store::ResourceFieldDescriptor {
1532                name: "full_data_type",
1533                role: ::olai_store::FieldRole::Data,
1534            },
1535            ::olai_store::ResourceFieldDescriptor {
1536                name: "input_params",
1537                role: ::olai_store::FieldRole::Data,
1538            },
1539            ::olai_store::ResourceFieldDescriptor {
1540                name: "return_params",
1541                role: ::olai_store::FieldRole::Data,
1542            },
1543            ::olai_store::ResourceFieldDescriptor {
1544                name: "routine_body_language",
1545                role: ::olai_store::FieldRole::Data,
1546            },
1547            ::olai_store::ResourceFieldDescriptor {
1548                name: "routine_definition",
1549                role: ::olai_store::FieldRole::Data,
1550            },
1551            ::olai_store::ResourceFieldDescriptor {
1552                name: "routine_dependencies",
1553                role: ::olai_store::FieldRole::Data,
1554            },
1555            ::olai_store::ResourceFieldDescriptor {
1556                name: "parameter_style",
1557                role: ::olai_store::FieldRole::Data,
1558            },
1559            ::olai_store::ResourceFieldDescriptor {
1560                name: "is_deterministic",
1561                role: ::olai_store::FieldRole::Data,
1562            },
1563            ::olai_store::ResourceFieldDescriptor {
1564                name: "sql_data_access",
1565                role: ::olai_store::FieldRole::Data,
1566            },
1567            ::olai_store::ResourceFieldDescriptor {
1568                name: "is_null_call",
1569                role: ::olai_store::FieldRole::Data,
1570            },
1571            ::olai_store::ResourceFieldDescriptor {
1572                name: "security_type",
1573                role: ::olai_store::FieldRole::Data,
1574            },
1575            ::olai_store::ResourceFieldDescriptor {
1576                name: "specific_name",
1577                role: ::olai_store::FieldRole::Data,
1578            },
1579            ::olai_store::ResourceFieldDescriptor {
1580                name: "routine_body",
1581                role: ::olai_store::FieldRole::Data,
1582            },
1583            ::olai_store::ResourceFieldDescriptor {
1584                name: "comment",
1585                role: ::olai_store::FieldRole::Data,
1586            },
1587            ::olai_store::ResourceFieldDescriptor {
1588                name: "properties",
1589                role: ::olai_store::FieldRole::Data,
1590            },
1591            ::olai_store::ResourceFieldDescriptor {
1592                name: "owner",
1593                role: ::olai_store::FieldRole::Data,
1594            },
1595            ::olai_store::ResourceFieldDescriptor {
1596                name: "function_id",
1597                role: ::olai_store::FieldRole::Identifier,
1598            },
1599            ::olai_store::ResourceFieldDescriptor {
1600                name: "created_at",
1601                role: ::olai_store::FieldRole::Managed,
1602            },
1603            ::olai_store::ResourceFieldDescriptor {
1604                name: "created_by",
1605                role: ::olai_store::FieldRole::Managed,
1606            },
1607            ::olai_store::ResourceFieldDescriptor {
1608                name: "updated_at",
1609                role: ::olai_store::FieldRole::Managed,
1610            },
1611            ::olai_store::ResourceFieldDescriptor {
1612                name: "updated_by",
1613                role: ::olai_store::FieldRole::Managed,
1614            },
1615        ],
1616        path_names: &["catalog_name", "schema_name", "name"],
1617        parent_label: Some(ObjectLabel::Catalog),
1618    },
1619    ::olai_store::ResourceTypeDescriptor {
1620        label: ObjectLabel::Provider,
1621        fields: &[
1622            ::olai_store::ResourceFieldDescriptor {
1623                name: "id",
1624                role: ::olai_store::FieldRole::Identifier,
1625            },
1626            ::olai_store::ResourceFieldDescriptor {
1627                name: "name",
1628                role: ::olai_store::FieldRole::Data,
1629            },
1630            ::olai_store::ResourceFieldDescriptor {
1631                name: "authentication_type",
1632                role: ::olai_store::FieldRole::Data,
1633            },
1634            ::olai_store::ResourceFieldDescriptor {
1635                name: "owner",
1636                role: ::olai_store::FieldRole::Data,
1637            },
1638            ::olai_store::ResourceFieldDescriptor {
1639                name: "comment",
1640                role: ::olai_store::FieldRole::Data,
1641            },
1642            ::olai_store::ResourceFieldDescriptor {
1643                name: "recipient_profile_str",
1644                role: ::olai_store::FieldRole::Data,
1645            },
1646            ::olai_store::ResourceFieldDescriptor {
1647                name: "properties",
1648                role: ::olai_store::FieldRole::Data,
1649            },
1650            ::olai_store::ResourceFieldDescriptor {
1651                name: "created_at",
1652                role: ::olai_store::FieldRole::Managed,
1653            },
1654            ::olai_store::ResourceFieldDescriptor {
1655                name: "created_by",
1656                role: ::olai_store::FieldRole::Managed,
1657            },
1658            ::olai_store::ResourceFieldDescriptor {
1659                name: "updated_at",
1660                role: ::olai_store::FieldRole::Managed,
1661            },
1662            ::olai_store::ResourceFieldDescriptor {
1663                name: "updated_by",
1664                role: ::olai_store::FieldRole::Managed,
1665            },
1666        ],
1667        path_names: &["name"],
1668        parent_label: None,
1669    },
1670    ::olai_store::ResourceTypeDescriptor {
1671        label: ObjectLabel::Recipient,
1672        fields: &[
1673            ::olai_store::ResourceFieldDescriptor {
1674                name: "id",
1675                role: ::olai_store::FieldRole::Identifier,
1676            },
1677            ::olai_store::ResourceFieldDescriptor {
1678                name: "name",
1679                role: ::olai_store::FieldRole::Data,
1680            },
1681            ::olai_store::ResourceFieldDescriptor {
1682                name: "authentication_type",
1683                role: ::olai_store::FieldRole::Data,
1684            },
1685            ::olai_store::ResourceFieldDescriptor {
1686                name: "owner",
1687                role: ::olai_store::FieldRole::Data,
1688            },
1689            ::olai_store::ResourceFieldDescriptor {
1690                name: "comment",
1691                role: ::olai_store::FieldRole::Data,
1692            },
1693            ::olai_store::ResourceFieldDescriptor {
1694                name: "properties",
1695                role: ::olai_store::FieldRole::Data,
1696            },
1697            ::olai_store::ResourceFieldDescriptor {
1698                name: "created_at",
1699                role: ::olai_store::FieldRole::Managed,
1700            },
1701            ::olai_store::ResourceFieldDescriptor {
1702                name: "created_by",
1703                role: ::olai_store::FieldRole::Managed,
1704            },
1705            ::olai_store::ResourceFieldDescriptor {
1706                name: "tokens",
1707                role: ::olai_store::FieldRole::Data,
1708            },
1709            ::olai_store::ResourceFieldDescriptor {
1710                name: "updated_at",
1711                role: ::olai_store::FieldRole::Managed,
1712            },
1713            ::olai_store::ResourceFieldDescriptor {
1714                name: "updated_by",
1715                role: ::olai_store::FieldRole::Managed,
1716            },
1717        ],
1718        path_names: &["name"],
1719        parent_label: None,
1720    },
1721    ::olai_store::ResourceTypeDescriptor {
1722        label: ObjectLabel::Schema,
1723        fields: &[
1724            ::olai_store::ResourceFieldDescriptor {
1725                name: "name",
1726                role: ::olai_store::FieldRole::Data,
1727            },
1728            ::olai_store::ResourceFieldDescriptor {
1729                name: "catalog_name",
1730                role: ::olai_store::FieldRole::Data,
1731            },
1732            ::olai_store::ResourceFieldDescriptor {
1733                name: "full_name",
1734                role: ::olai_store::FieldRole::Data,
1735            },
1736            ::olai_store::ResourceFieldDescriptor {
1737                name: "comment",
1738                role: ::olai_store::FieldRole::Data,
1739            },
1740            ::olai_store::ResourceFieldDescriptor {
1741                name: "properties",
1742                role: ::olai_store::FieldRole::Data,
1743            },
1744            ::olai_store::ResourceFieldDescriptor {
1745                name: "owner",
1746                role: ::olai_store::FieldRole::Data,
1747            },
1748            ::olai_store::ResourceFieldDescriptor {
1749                name: "created_at",
1750                role: ::olai_store::FieldRole::Managed,
1751            },
1752            ::olai_store::ResourceFieldDescriptor {
1753                name: "created_by",
1754                role: ::olai_store::FieldRole::Managed,
1755            },
1756            ::olai_store::ResourceFieldDescriptor {
1757                name: "updated_at",
1758                role: ::olai_store::FieldRole::Managed,
1759            },
1760            ::olai_store::ResourceFieldDescriptor {
1761                name: "updated_by",
1762                role: ::olai_store::FieldRole::Managed,
1763            },
1764            ::olai_store::ResourceFieldDescriptor {
1765                name: "schema_id",
1766                role: ::olai_store::FieldRole::Identifier,
1767            },
1768            ::olai_store::ResourceFieldDescriptor {
1769                name: "storage_root",
1770                role: ::olai_store::FieldRole::Data,
1771            },
1772            ::olai_store::ResourceFieldDescriptor {
1773                name: "storage_location",
1774                role: ::olai_store::FieldRole::Data,
1775            },
1776        ],
1777        path_names: &["catalog_name", "name"],
1778        parent_label: Some(ObjectLabel::Catalog),
1779    },
1780    ::olai_store::ResourceTypeDescriptor {
1781        label: ObjectLabel::Share,
1782        fields: &[
1783            ::olai_store::ResourceFieldDescriptor {
1784                name: "id",
1785                role: ::olai_store::FieldRole::Identifier,
1786            },
1787            ::olai_store::ResourceFieldDescriptor {
1788                name: "name",
1789                role: ::olai_store::FieldRole::Data,
1790            },
1791            ::olai_store::ResourceFieldDescriptor {
1792                name: "objects",
1793                role: ::olai_store::FieldRole::Data,
1794            },
1795            ::olai_store::ResourceFieldDescriptor {
1796                name: "owner",
1797                role: ::olai_store::FieldRole::Data,
1798            },
1799            ::olai_store::ResourceFieldDescriptor {
1800                name: "comment",
1801                role: ::olai_store::FieldRole::Data,
1802            },
1803            ::olai_store::ResourceFieldDescriptor {
1804                name: "storage_location",
1805                role: ::olai_store::FieldRole::Data,
1806            },
1807            ::olai_store::ResourceFieldDescriptor {
1808                name: "storage_root",
1809                role: ::olai_store::FieldRole::Data,
1810            },
1811            ::olai_store::ResourceFieldDescriptor {
1812                name: "created_at",
1813                role: ::olai_store::FieldRole::Managed,
1814            },
1815            ::olai_store::ResourceFieldDescriptor {
1816                name: "created_by",
1817                role: ::olai_store::FieldRole::Managed,
1818            },
1819            ::olai_store::ResourceFieldDescriptor {
1820                name: "updated_at",
1821                role: ::olai_store::FieldRole::Managed,
1822            },
1823            ::olai_store::ResourceFieldDescriptor {
1824                name: "updated_by",
1825                role: ::olai_store::FieldRole::Managed,
1826            },
1827        ],
1828        path_names: &["name"],
1829        parent_label: None,
1830    },
1831    ::olai_store::ResourceTypeDescriptor {
1832        label: ObjectLabel::StagingTable,
1833        fields: &[
1834            ::olai_store::ResourceFieldDescriptor {
1835                name: "id",
1836                role: ::olai_store::FieldRole::Identifier,
1837            },
1838            ::olai_store::ResourceFieldDescriptor {
1839                name: "name",
1840                role: ::olai_store::FieldRole::Data,
1841            },
1842            ::olai_store::ResourceFieldDescriptor {
1843                name: "schema_name",
1844                role: ::olai_store::FieldRole::Data,
1845            },
1846            ::olai_store::ResourceFieldDescriptor {
1847                name: "catalog_name",
1848                role: ::olai_store::FieldRole::Data,
1849            },
1850            ::olai_store::ResourceFieldDescriptor {
1851                name: "staging_location",
1852                role: ::olai_store::FieldRole::Data,
1853            },
1854            ::olai_store::ResourceFieldDescriptor {
1855                name: "created_by",
1856                role: ::olai_store::FieldRole::Managed,
1857            },
1858            ::olai_store::ResourceFieldDescriptor {
1859                name: "stage_committed",
1860                role: ::olai_store::FieldRole::Data,
1861            },
1862            ::olai_store::ResourceFieldDescriptor {
1863                name: "created_at",
1864                role: ::olai_store::FieldRole::Managed,
1865            },
1866        ],
1867        path_names: &["name"],
1868        parent_label: None,
1869    },
1870    ::olai_store::ResourceTypeDescriptor {
1871        label: ObjectLabel::Table,
1872        fields: &[
1873            ::olai_store::ResourceFieldDescriptor {
1874                name: "name",
1875                role: ::olai_store::FieldRole::Data,
1876            },
1877            ::olai_store::ResourceFieldDescriptor {
1878                name: "catalog_name",
1879                role: ::olai_store::FieldRole::Data,
1880            },
1881            ::olai_store::ResourceFieldDescriptor {
1882                name: "schema_name",
1883                role: ::olai_store::FieldRole::Data,
1884            },
1885            ::olai_store::ResourceFieldDescriptor {
1886                name: "table_type",
1887                role: ::olai_store::FieldRole::Data,
1888            },
1889            ::olai_store::ResourceFieldDescriptor {
1890                name: "data_source_format",
1891                role: ::olai_store::FieldRole::Data,
1892            },
1893            ::olai_store::ResourceFieldDescriptor {
1894                name: "columns",
1895                role: ::olai_store::FieldRole::Data,
1896            },
1897            ::olai_store::ResourceFieldDescriptor {
1898                name: "storage_location",
1899                role: ::olai_store::FieldRole::Data,
1900            },
1901            ::olai_store::ResourceFieldDescriptor {
1902                name: "view_definition",
1903                role: ::olai_store::FieldRole::Data,
1904            },
1905            ::olai_store::ResourceFieldDescriptor {
1906                name: "view_dependencies",
1907                role: ::olai_store::FieldRole::Data,
1908            },
1909            ::olai_store::ResourceFieldDescriptor {
1910                name: "owner",
1911                role: ::olai_store::FieldRole::Data,
1912            },
1913            ::olai_store::ResourceFieldDescriptor {
1914                name: "comment",
1915                role: ::olai_store::FieldRole::Data,
1916            },
1917            ::olai_store::ResourceFieldDescriptor {
1918                name: "properties",
1919                role: ::olai_store::FieldRole::Data,
1920            },
1921            ::olai_store::ResourceFieldDescriptor {
1922                name: "storage_credential_name",
1923                role: ::olai_store::FieldRole::Data,
1924            },
1925            ::olai_store::ResourceFieldDescriptor {
1926                name: "full_name",
1927                role: ::olai_store::FieldRole::Data,
1928            },
1929            ::olai_store::ResourceFieldDescriptor {
1930                name: "created_at",
1931                role: ::olai_store::FieldRole::Managed,
1932            },
1933            ::olai_store::ResourceFieldDescriptor {
1934                name: "created_by",
1935                role: ::olai_store::FieldRole::Managed,
1936            },
1937            ::olai_store::ResourceFieldDescriptor {
1938                name: "updated_at",
1939                role: ::olai_store::FieldRole::Managed,
1940            },
1941            ::olai_store::ResourceFieldDescriptor {
1942                name: "updated_by",
1943                role: ::olai_store::FieldRole::Managed,
1944            },
1945            ::olai_store::ResourceFieldDescriptor {
1946                name: "deleted_at",
1947                role: ::olai_store::FieldRole::Data,
1948            },
1949            ::olai_store::ResourceFieldDescriptor {
1950                name: "table_id",
1951                role: ::olai_store::FieldRole::Identifier,
1952            },
1953        ],
1954        path_names: &["catalog_name", "schema_name", "name"],
1955        parent_label: Some(ObjectLabel::Catalog),
1956    },
1957    ::olai_store::ResourceTypeDescriptor {
1958        label: ObjectLabel::TagPolicy,
1959        fields: &[
1960            ::olai_store::ResourceFieldDescriptor {
1961                name: "tag_key",
1962                role: ::olai_store::FieldRole::Data,
1963            },
1964            ::olai_store::ResourceFieldDescriptor {
1965                name: "description",
1966                role: ::olai_store::FieldRole::Data,
1967            },
1968            ::olai_store::ResourceFieldDescriptor {
1969                name: "values",
1970                role: ::olai_store::FieldRole::Data,
1971            },
1972            ::olai_store::ResourceFieldDescriptor {
1973                name: "id",
1974                role: ::olai_store::FieldRole::Identifier,
1975            },
1976            ::olai_store::ResourceFieldDescriptor {
1977                name: "created_at",
1978                role: ::olai_store::FieldRole::Managed,
1979            },
1980            ::olai_store::ResourceFieldDescriptor {
1981                name: "updated_at",
1982                role: ::olai_store::FieldRole::Managed,
1983            },
1984        ],
1985        path_names: &["tag_key"],
1986        parent_label: None,
1987    },
1988    ::olai_store::ResourceTypeDescriptor {
1989        label: ObjectLabel::Volume,
1990        fields: &[
1991            ::olai_store::ResourceFieldDescriptor {
1992                name: "name",
1993                role: ::olai_store::FieldRole::Data,
1994            },
1995            ::olai_store::ResourceFieldDescriptor {
1996                name: "catalog_name",
1997                role: ::olai_store::FieldRole::Data,
1998            },
1999            ::olai_store::ResourceFieldDescriptor {
2000                name: "schema_name",
2001                role: ::olai_store::FieldRole::Data,
2002            },
2003            ::olai_store::ResourceFieldDescriptor {
2004                name: "full_name",
2005                role: ::olai_store::FieldRole::Data,
2006            },
2007            ::olai_store::ResourceFieldDescriptor {
2008                name: "storage_location",
2009                role: ::olai_store::FieldRole::Data,
2010            },
2011            ::olai_store::ResourceFieldDescriptor {
2012                name: "volume_id",
2013                role: ::olai_store::FieldRole::Identifier,
2014            },
2015            ::olai_store::ResourceFieldDescriptor {
2016                name: "volume_type",
2017                role: ::olai_store::FieldRole::Data,
2018            },
2019            ::olai_store::ResourceFieldDescriptor {
2020                name: "owner",
2021                role: ::olai_store::FieldRole::Data,
2022            },
2023            ::olai_store::ResourceFieldDescriptor {
2024                name: "comment",
2025                role: ::olai_store::FieldRole::Data,
2026            },
2027            ::olai_store::ResourceFieldDescriptor {
2028                name: "created_at",
2029                role: ::olai_store::FieldRole::Managed,
2030            },
2031            ::olai_store::ResourceFieldDescriptor {
2032                name: "created_by",
2033                role: ::olai_store::FieldRole::Managed,
2034            },
2035            ::olai_store::ResourceFieldDescriptor {
2036                name: "updated_at",
2037                role: ::olai_store::FieldRole::Managed,
2038            },
2039            ::olai_store::ResourceFieldDescriptor {
2040                name: "updated_by",
2041                role: ::olai_store::FieldRole::Managed,
2042            },
2043            ::olai_store::ResourceFieldDescriptor {
2044                name: "browse_only",
2045                role: ::olai_store::FieldRole::Data,
2046            },
2047            ::olai_store::ResourceFieldDescriptor {
2048                name: "metastore_id",
2049                role: ::olai_store::FieldRole::Data,
2050            },
2051        ],
2052        path_names: &["catalog_name", "schema_name", "name"],
2053        parent_label: Some(ObjectLabel::Catalog),
2054    },
2055];