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