1#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, Debug, PartialEq)]
5pub enum Resource {
6 Agent(super::agents::v0alpha1::Agent),
7 AgentSkill(super::agent_skills::v0alpha1::AgentSkill),
8 Catalog(super::catalogs::v1::Catalog),
9 Column(super::tables::v1::Column),
10 Credential(super::credentials::v1::Credential),
11 ExternalLocation(super::external_locations::v1::ExternalLocation),
12 Function(super::functions::v1::Function),
13 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#[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 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 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 pub fn qualified_name(&self) -> String {
1005 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1006 }
1007}
1008impl super::catalogs::v1::Catalog {
1009 pub fn qualified_name(&self) -> String {
1011 self.name.clone()
1012 }
1013}
1014impl super::tables::v1::Column {
1015 pub fn qualified_name(&self) -> String {
1017 self.name.clone()
1018 }
1019}
1020impl super::credentials::v1::Credential {
1021 pub fn qualified_name(&self) -> String {
1023 self.name.clone()
1024 }
1025}
1026impl super::external_locations::v1::ExternalLocation {
1027 pub fn qualified_name(&self) -> String {
1029 self.name.clone()
1030 }
1031}
1032impl super::functions::v1::Function {
1033 pub fn qualified_name(&self) -> String {
1035 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1036 }
1037}
1038impl super::providers::v1::Provider {
1039 pub fn qualified_name(&self) -> String {
1041 self.name.clone()
1042 }
1043}
1044impl super::recipients::v1::Recipient {
1045 pub fn qualified_name(&self) -> String {
1047 self.name.clone()
1048 }
1049}
1050impl super::schemas::v1::Schema {
1051 pub fn qualified_name(&self) -> String {
1053 format!("{}.{}", self.catalog_name, self.name)
1054 }
1055}
1056impl super::shares::v1::Share {
1057 pub fn qualified_name(&self) -> String {
1059 self.name.clone()
1060 }
1061}
1062impl super::staging_tables::v1::StagingTable {
1063 pub fn qualified_name(&self) -> String {
1065 self.name.clone()
1066 }
1067}
1068impl super::tables::v1::Table {
1069 pub fn qualified_name(&self) -> String {
1071 format!("{}.{}.{}", self.catalog_name, self.schema_name, self.name)
1072 }
1073}
1074impl super::tags::v1::TagPolicy {
1075 pub fn qualified_name(&self) -> String {
1077 self.tag_key.clone()
1078 }
1079}
1080impl super::volumes::v1::Volume {
1081 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}
1091pub 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];