mz_catalog_protos/
objects.rs

1// Copyright Materialize, Inc. and contributors. All rights reserved.
2//
3// Use of this software is governed by the Business Source License
4// included in the LICENSE file.
5//
6// As of the Change Date specified in that file, in accordance with
7// the Business Source License, use of this software will be governed
8// by the Apache License, Version 2.0.
9
10use num_enum::{IntoPrimitive, TryFromPrimitive};
11use proptest_derive::Arbitrary;
12use serde::{Deserialize, Serialize};
13
14#[derive(
15    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
16)]
17pub struct ConfigKey {
18    pub key: String,
19}
20
21#[derive(
22    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
23)]
24pub struct ConfigValue {
25    pub value: u64,
26}
27
28#[derive(
29    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
30)]
31pub struct SettingKey {
32    pub name: String,
33}
34
35#[derive(
36    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
37)]
38pub struct SettingValue {
39    pub value: String,
40}
41
42#[derive(
43    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
44)]
45pub struct IdAllocKey {
46    pub name: String,
47}
48
49#[derive(
50    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
51)]
52pub struct IdAllocValue {
53    pub next_id: u64,
54}
55
56#[derive(
57    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
58)]
59pub struct GidMappingKey {
60    pub schema_name: String,
61    pub object_type: i32,
62    pub object_name: String,
63}
64
65#[derive(
66    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
67)]
68pub struct GidMappingValue {
69    pub id: u64,
70    pub fingerprint: String,
71    pub global_id: Option<SystemGlobalId>,
72}
73
74#[derive(
75    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
76)]
77pub struct ClusterKey {
78    pub id: Option<ClusterId>,
79}
80
81#[derive(
82    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
83)]
84pub struct ClusterValue {
85    pub name: String,
86    pub owner_id: Option<RoleId>,
87    pub privileges: Vec<MzAclItem>,
88    pub config: Option<ClusterConfig>,
89}
90
91#[derive(
92    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
93)]
94pub struct ClusterIntrospectionSourceIndexKey {
95    pub cluster_id: Option<ClusterId>,
96    pub name: String,
97}
98
99#[derive(
100    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
101)]
102pub struct ClusterIntrospectionSourceIndexValue {
103    pub index_id: u64,
104    pub oid: u32,
105    pub global_id: Option<IntrospectionSourceIndexGlobalId>,
106}
107
108#[derive(
109    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
110)]
111pub struct ClusterReplicaKey {
112    pub id: Option<ReplicaId>,
113}
114
115#[derive(
116    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
117)]
118pub struct ClusterReplicaValue {
119    pub cluster_id: Option<ClusterId>,
120    pub name: String,
121    pub config: Option<ReplicaConfig>,
122    pub owner_id: Option<RoleId>,
123}
124
125#[derive(
126    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
127)]
128pub struct DatabaseKey {
129    pub id: Option<DatabaseId>,
130}
131
132#[derive(
133    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
134)]
135pub struct DatabaseValue {
136    pub name: String,
137    pub owner_id: Option<RoleId>,
138    pub privileges: Vec<MzAclItem>,
139    pub oid: u32,
140}
141
142#[derive(
143    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
144)]
145pub struct SchemaKey {
146    pub id: Option<SchemaId>,
147}
148
149#[derive(
150    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
151)]
152pub struct SchemaValue {
153    pub database_id: Option<DatabaseId>,
154    pub name: String,
155    pub owner_id: Option<RoleId>,
156    pub privileges: Vec<MzAclItem>,
157    pub oid: u32,
158}
159
160#[derive(
161    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
162)]
163pub struct ItemKey {
164    pub gid: Option<CatalogItemId>,
165}
166
167#[derive(
168    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
169)]
170pub struct ItemValue {
171    pub schema_id: Option<SchemaId>,
172    pub name: String,
173    pub definition: Option<CatalogItem>,
174    pub owner_id: Option<RoleId>,
175    pub privileges: Vec<MzAclItem>,
176    pub oid: u32,
177    pub global_id: Option<GlobalId>,
178    pub extra_versions: Vec<ItemVersion>,
179}
180
181#[derive(
182    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
183)]
184pub struct ItemVersion {
185    pub global_id: Option<GlobalId>,
186    pub version: Option<Version>,
187}
188
189#[derive(
190    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
191)]
192pub struct RoleKey {
193    pub id: Option<RoleId>,
194}
195
196#[derive(
197    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
198)]
199pub struct RoleValue {
200    pub name: String,
201    pub attributes: Option<RoleAttributes>,
202    pub membership: Option<RoleMembership>,
203    pub vars: Option<RoleVars>,
204    pub oid: u32,
205}
206
207#[derive(
208    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
209)]
210pub struct RoleAuthKey {
211    pub id: Option<RoleId>,
212}
213
214#[derive(
215    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
216)]
217pub struct RoleAuthValue {
218    pub password_hash: Option<String>,
219    pub updated_at: Option<EpochMillis>,
220}
221
222#[derive(
223    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
224)]
225pub struct NetworkPolicyKey {
226    pub id: Option<NetworkPolicyId>,
227}
228
229#[derive(
230    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
231)]
232pub struct NetworkPolicyValue {
233    pub name: String,
234    pub rules: Vec<NetworkPolicyRule>,
235    pub owner_id: Option<RoleId>,
236    pub privileges: Vec<MzAclItem>,
237    pub oid: u32,
238}
239
240#[derive(
241    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
242)]
243pub struct ServerConfigurationKey {
244    pub name: String,
245}
246
247#[derive(
248    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
249)]
250pub struct ServerConfigurationValue {
251    pub value: String,
252}
253
254#[derive(
255    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
256)]
257pub struct AuditLogKey {
258    pub event: Option<audit_log_key::Event>,
259}
260
261pub mod audit_log_key {
262    use super::*;
263
264    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
265    pub enum Event {
266        V1(AuditLogEventV1),
267    }
268}
269
270#[derive(
271    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
272)]
273pub struct CommentKey {
274    pub object: Option<comment_key::Object>,
275    pub sub_component: Option<comment_key::SubComponent>,
276}
277
278pub mod comment_key {
279    use super::*;
280
281    #[derive(
282        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
283    )]
284    pub enum Object {
285        Table(CatalogItemId),
286        View(CatalogItemId),
287        MaterializedView(CatalogItemId),
288        Source(CatalogItemId),
289        Sink(CatalogItemId),
290        Index(CatalogItemId),
291        Func(CatalogItemId),
292        Connection(CatalogItemId),
293        Type(CatalogItemId),
294        Secret(CatalogItemId),
295        ContinualTask(CatalogItemId),
296        Role(RoleId),
297        Database(DatabaseId),
298        Schema(ResolvedSchema),
299        Cluster(ClusterId),
300        ClusterReplica(ClusterReplicaId),
301        NetworkPolicy(NetworkPolicyId),
302    }
303
304    #[derive(
305        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
306    )]
307    pub enum SubComponent {
308        ColumnPos(u64),
309    }
310}
311
312#[derive(
313    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
314)]
315pub struct CommentValue {
316    pub comment: String,
317}
318
319#[derive(
320    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
321)]
322pub struct SourceReferencesKey {
323    pub source: Option<CatalogItemId>,
324}
325
326#[derive(
327    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
328)]
329pub struct SourceReferencesValue {
330    pub references: Vec<SourceReference>,
331    pub updated_at: Option<EpochMillis>,
332}
333
334#[derive(
335    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
336)]
337pub struct SourceReference {
338    pub name: String,
339    pub namespace: Option<String>,
340    pub columns: Vec<String>,
341}
342
343#[derive(
344    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
345)]
346pub struct StorageCollectionMetadataKey {
347    pub id: Option<GlobalId>,
348}
349
350#[derive(
351    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
352)]
353pub struct StorageCollectionMetadataValue {
354    pub shard: String,
355}
356
357#[derive(
358    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
359)]
360pub struct UnfinalizedShardKey {
361    pub shard: String,
362}
363
364#[derive(
365    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
366)]
367pub struct TxnWalShardValue {
368    pub shard: String,
369}
370
371#[derive(
372    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
373)]
374pub struct Empty {}
375
376#[derive(
377    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
378)]
379pub struct StringWrapper {
380    pub inner: String,
381}
382
383#[derive(
384    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
385)]
386pub struct Duration {
387    pub secs: u64,
388    pub nanos: u32,
389}
390
391#[derive(
392    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
393)]
394pub struct EpochMillis {
395    pub millis: u64,
396}
397
398#[derive(
399    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
400)]
401pub struct Timestamp {
402    pub internal: u64,
403}
404
405#[derive(
406    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
407)]
408pub struct Version {
409    pub value: u64,
410}
411
412#[derive(
413    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
414)]
415pub struct CatalogItem {
416    pub value: Option<catalog_item::Value>,
417}
418
419pub mod catalog_item {
420    use super::*;
421
422    #[derive(
423        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
424    )]
425    pub struct V1 {
426        pub create_sql: String,
427    }
428
429    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
430    pub enum Value {
431        V1(V1),
432    }
433}
434
435#[derive(
436    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
437)]
438pub struct CatalogItemId {
439    pub value: Option<catalog_item_id::Value>,
440}
441
442pub mod catalog_item_id {
443    use super::*;
444
445    #[derive(
446        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
447    )]
448    pub enum Value {
449        System(u64),
450        User(u64),
451        Transient(u64),
452        IntrospectionSourceIndex(u64),
453    }
454}
455
456#[derive(
457    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
458)]
459pub struct SystemCatalogItemId {
460    pub value: u64,
461}
462
463#[derive(
464    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
465)]
466pub struct IntrospectionSourceIndexCatalogItemId {
467    pub value: u64,
468}
469
470#[derive(
471    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
472)]
473pub struct GlobalId {
474    pub value: Option<global_id::Value>,
475}
476
477pub mod global_id {
478    use super::*;
479
480    #[derive(
481        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
482    )]
483    pub enum Value {
484        System(u64),
485        User(u64),
486        Transient(u64),
487        Explain(Empty),
488        IntrospectionSourceIndex(u64),
489    }
490}
491
492#[derive(
493    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
494)]
495pub struct SystemGlobalId {
496    pub value: u64,
497}
498
499#[derive(
500    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
501)]
502pub struct IntrospectionSourceIndexGlobalId {
503    pub value: u64,
504}
505
506#[derive(
507    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
508)]
509pub struct ClusterId {
510    pub value: Option<cluster_id::Value>,
511}
512
513pub mod cluster_id {
514    use super::*;
515
516    #[derive(
517        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
518    )]
519    pub enum Value {
520        System(u64),
521        User(u64),
522    }
523}
524
525#[derive(
526    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
527)]
528pub struct DatabaseId {
529    pub value: Option<database_id::Value>,
530}
531
532pub mod database_id {
533    use super::*;
534
535    #[derive(
536        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
537    )]
538    pub enum Value {
539        System(u64),
540        User(u64),
541    }
542}
543
544#[derive(
545    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
546)]
547pub struct ResolvedDatabaseSpecifier {
548    pub spec: Option<resolved_database_specifier::Spec>,
549}
550
551pub mod resolved_database_specifier {
552    use super::*;
553
554    #[derive(
555        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
556    )]
557    pub enum Spec {
558        Ambient(Empty),
559        Id(DatabaseId),
560    }
561}
562
563#[derive(
564    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
565)]
566pub struct SchemaId {
567    pub value: Option<schema_id::Value>,
568}
569
570pub mod schema_id {
571    use super::*;
572
573    #[derive(
574        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
575    )]
576    pub enum Value {
577        System(u64),
578        User(u64),
579    }
580}
581
582#[derive(
583    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
584)]
585pub struct SchemaSpecifier {
586    pub spec: Option<schema_specifier::Spec>,
587}
588
589pub mod schema_specifier {
590    use super::*;
591
592    #[derive(
593        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
594    )]
595    pub enum Spec {
596        Temporary(Empty),
597        Id(SchemaId),
598    }
599}
600
601#[derive(
602    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
603)]
604pub struct ResolvedSchema {
605    pub database: Option<ResolvedDatabaseSpecifier>,
606    pub schema: Option<SchemaSpecifier>,
607}
608
609#[derive(
610    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
611)]
612pub struct ReplicaId {
613    pub value: Option<replica_id::Value>,
614}
615
616pub mod replica_id {
617    use super::*;
618
619    #[derive(
620        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
621    )]
622    pub enum Value {
623        System(u64),
624        User(u64),
625    }
626}
627
628#[derive(
629    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
630)]
631pub struct ClusterReplicaId {
632    pub cluster_id: Option<ClusterId>,
633    pub replica_id: Option<ReplicaId>,
634}
635
636#[derive(
637    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
638)]
639pub struct NetworkPolicyId {
640    pub value: Option<network_policy_id::Value>,
641}
642
643pub mod network_policy_id {
644    use super::*;
645
646    #[derive(
647        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
648    )]
649    pub enum Value {
650        System(u64),
651        User(u64),
652    }
653}
654
655#[derive(
656    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
657)]
658pub struct ReplicaLogging {
659    pub log_logging: bool,
660    pub interval: Option<Duration>,
661}
662
663#[derive(
664    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
665)]
666pub struct OptimizerFeatureOverride {
667    pub name: String,
668    pub value: String,
669}
670
671#[derive(
672    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
673)]
674pub struct ClusterScheduleRefreshOptions {
675    pub rehydration_time_estimate: Option<Duration>,
676}
677
678#[derive(
679    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
680)]
681pub struct ClusterSchedule {
682    pub value: Option<cluster_schedule::Value>,
683}
684
685pub mod cluster_schedule {
686    use super::*;
687
688    #[derive(
689        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
690    )]
691    pub enum Value {
692        Manual(Empty),
693        Refresh(ClusterScheduleRefreshOptions),
694    }
695}
696
697#[derive(
698    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
699)]
700pub struct ClusterConfig {
701    pub workload_class: Option<String>,
702    pub variant: Option<cluster_config::Variant>,
703}
704
705pub mod cluster_config {
706    use super::*;
707
708    #[derive(
709        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
710    )]
711    pub struct ManagedCluster {
712        pub size: String,
713        pub replication_factor: u32,
714        pub availability_zones: Vec<String>,
715        pub logging: Option<ReplicaLogging>,
716        pub optimizer_feature_overrides: Vec<OptimizerFeatureOverride>,
717        pub schedule: Option<ClusterSchedule>,
718    }
719
720    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
721    pub enum Variant {
722        Unmanaged(Empty),
723        Managed(ManagedCluster),
724    }
725}
726
727#[derive(
728    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
729)]
730pub struct ReplicaConfig {
731    pub logging: Option<ReplicaLogging>,
732    pub location: Option<replica_config::Location>,
733}
734
735pub mod replica_config {
736    use super::*;
737
738    #[derive(
739        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
740    )]
741    pub struct UnmanagedLocation {
742        pub storagectl_addrs: Vec<String>,
743        pub computectl_addrs: Vec<String>,
744    }
745
746    #[derive(
747        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
748    )]
749    pub struct ManagedLocation {
750        pub size: String,
751        pub availability_zone: Option<String>,
752        pub internal: bool,
753        pub billed_as: Option<String>,
754        pub pending: bool,
755    }
756
757    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
758    pub enum Location {
759        Unmanaged(UnmanagedLocation),
760        Managed(ManagedLocation),
761    }
762}
763
764#[derive(
765    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
766)]
767pub struct RoleId {
768    pub value: Option<role_id::Value>,
769}
770
771pub mod role_id {
772    use super::*;
773
774    #[derive(
775        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
776    )]
777    pub enum Value {
778        System(u64),
779        User(u64),
780        Public(Empty),
781        Predefined(u64),
782    }
783}
784
785#[derive(
786    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
787)]
788pub struct RoleAttributes {
789    pub inherit: bool,
790    pub superuser: Option<bool>,
791    pub login: Option<bool>,
792}
793
794#[derive(
795    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
796)]
797pub struct RoleMembership {
798    pub map: Vec<role_membership::Entry>,
799}
800
801pub mod role_membership {
802    use super::*;
803
804    #[derive(
805        Clone,
806        Copy,
807        Debug,
808        Default,
809        PartialEq,
810        Eq,
811        PartialOrd,
812        Ord,
813        Serialize,
814        Deserialize,
815        Arbitrary,
816    )]
817    pub struct Entry {
818        pub key: Option<RoleId>,
819        pub value: Option<RoleId>,
820    }
821}
822
823#[derive(
824    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
825)]
826pub struct RoleVars {
827    pub entries: Vec<role_vars::Entry>,
828}
829
830pub mod role_vars {
831    use super::*;
832
833    #[derive(
834        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
835    )]
836    pub struct SqlSet {
837        pub entries: Vec<String>,
838    }
839
840    #[derive(
841        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
842    )]
843    pub struct Entry {
844        pub key: String,
845        pub val: Option<entry::Val>,
846    }
847
848    pub mod entry {
849        use super::*;
850
851        #[derive(
852            Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
853        )]
854        pub enum Val {
855            Flat(String),
856            SqlSet(SqlSet),
857        }
858    }
859}
860
861#[derive(
862    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
863)]
864pub struct NetworkPolicyRule {
865    pub name: String,
866    pub address: String,
867    pub action: Option<network_policy_rule::Action>,
868    pub direction: Option<network_policy_rule::Direction>,
869}
870
871pub mod network_policy_rule {
872    use super::*;
873
874    #[derive(
875        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
876    )]
877    pub enum Action {
878        Allow(Empty),
879    }
880
881    #[derive(
882        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
883    )]
884    pub enum Direction {
885        Ingress(Empty),
886    }
887}
888
889#[derive(
890    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
891)]
892pub struct AclMode {
893    pub bitflags: u64,
894}
895
896#[derive(
897    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
898)]
899pub struct MzAclItem {
900    pub grantee: Option<RoleId>,
901    pub grantor: Option<RoleId>,
902    pub acl_mode: Option<AclMode>,
903}
904
905#[derive(
906    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
907)]
908pub struct DefaultPrivilegesKey {
909    pub role_id: Option<RoleId>,
910    pub database_id: Option<DatabaseId>,
911    pub schema_id: Option<SchemaId>,
912    pub object_type: i32,
913    pub grantee: Option<RoleId>,
914}
915
916#[derive(
917    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
918)]
919pub struct DefaultPrivilegesValue {
920    pub privileges: Option<AclMode>,
921}
922
923#[derive(
924    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
925)]
926pub struct SystemPrivilegesKey {
927    pub grantee: Option<RoleId>,
928    pub grantor: Option<RoleId>,
929}
930
931#[derive(
932    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
933)]
934pub struct SystemPrivilegesValue {
935    pub acl_mode: Option<AclMode>,
936}
937
938#[derive(
939    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
940)]
941pub struct AuditLogEventV1 {
942    pub id: u64,
943    pub event_type: i32,
944    pub object_type: i32,
945    pub user: Option<StringWrapper>,
946    pub occurred_at: Option<EpochMillis>,
947    pub details: Option<audit_log_event_v1::Details>,
948}
949
950pub mod audit_log_event_v1 {
951    use super::*;
952
953    #[derive(
954        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
955    )]
956    pub struct IdFullNameV1 {
957        pub id: String,
958        pub name: Option<FullNameV1>,
959    }
960
961    #[derive(
962        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
963    )]
964    pub struct FullNameV1 {
965        pub database: String,
966        pub schema: String,
967        pub item: String,
968    }
969
970    #[derive(
971        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
972    )]
973    pub struct IdNameV1 {
974        pub id: String,
975        pub name: String,
976    }
977
978    #[derive(
979        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
980    )]
981    pub struct RenameClusterV1 {
982        pub id: String,
983        pub old_name: String,
984        pub new_name: String,
985    }
986
987    #[derive(
988        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
989    )]
990    pub struct RenameClusterReplicaV1 {
991        pub cluster_id: String,
992        pub replica_id: String,
993        pub old_name: String,
994        pub new_name: String,
995    }
996
997    #[derive(
998        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
999    )]
1000    pub struct RenameItemV1 {
1001        pub id: String,
1002        pub old_name: Option<FullNameV1>,
1003        pub new_name: Option<FullNameV1>,
1004    }
1005
1006    #[derive(
1007        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1008    )]
1009    pub struct CreateClusterReplicaV1 {
1010        pub cluster_id: String,
1011        pub cluster_name: String,
1012        pub replica_id: Option<StringWrapper>,
1013        pub replica_name: String,
1014        pub logical_size: String,
1015        pub disk: bool,
1016        pub billed_as: Option<String>,
1017        pub internal: bool,
1018    }
1019
1020    #[derive(
1021        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1022    )]
1023    pub struct CreateClusterReplicaV2 {
1024        pub cluster_id: String,
1025        pub cluster_name: String,
1026        pub replica_id: Option<StringWrapper>,
1027        pub replica_name: String,
1028        pub logical_size: String,
1029        pub disk: bool,
1030        pub billed_as: Option<String>,
1031        pub internal: bool,
1032        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
1033        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV1>,
1034    }
1035
1036    #[derive(
1037        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1038    )]
1039    pub struct CreateClusterReplicaV3 {
1040        pub cluster_id: String,
1041        pub cluster_name: String,
1042        pub replica_id: Option<StringWrapper>,
1043        pub replica_name: String,
1044        pub logical_size: String,
1045        pub disk: bool,
1046        pub billed_as: Option<String>,
1047        pub internal: bool,
1048        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
1049        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV2>,
1050    }
1051
1052    #[derive(
1053        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1054    )]
1055    pub struct CreateClusterReplicaV4 {
1056        pub cluster_id: String,
1057        pub cluster_name: String,
1058        pub replica_id: Option<StringWrapper>,
1059        pub replica_name: String,
1060        pub logical_size: String,
1061        pub billed_as: Option<String>,
1062        pub internal: bool,
1063        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
1064        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV2>,
1065    }
1066
1067    #[derive(
1068        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1069    )]
1070    pub struct DropClusterReplicaV1 {
1071        pub cluster_id: String,
1072        pub cluster_name: String,
1073        pub replica_id: Option<StringWrapper>,
1074        pub replica_name: String,
1075    }
1076
1077    #[derive(
1078        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1079    )]
1080    pub struct DropClusterReplicaV2 {
1081        pub cluster_id: String,
1082        pub cluster_name: String,
1083        pub replica_id: Option<StringWrapper>,
1084        pub replica_name: String,
1085        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
1086        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV1>,
1087    }
1088
1089    #[derive(
1090        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1091    )]
1092    pub struct DropClusterReplicaV3 {
1093        pub cluster_id: String,
1094        pub cluster_name: String,
1095        pub replica_id: Option<StringWrapper>,
1096        pub replica_name: String,
1097        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
1098        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV2>,
1099    }
1100
1101    #[derive(
1102        Clone,
1103        Copy,
1104        Debug,
1105        Default,
1106        PartialEq,
1107        Eq,
1108        PartialOrd,
1109        Ord,
1110        Serialize,
1111        Deserialize,
1112        Arbitrary,
1113    )]
1114    pub struct CreateOrDropClusterReplicaReasonV1 {
1115        pub reason: Option<create_or_drop_cluster_replica_reason_v1::Reason>,
1116    }
1117
1118    pub mod create_or_drop_cluster_replica_reason_v1 {
1119        use super::*;
1120
1121        #[derive(
1122            Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1123        )]
1124        pub enum Reason {
1125            Manual(Empty),
1126            Schedule(Empty),
1127            System(Empty),
1128        }
1129    }
1130
1131    #[derive(
1132        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1133    )]
1134    pub struct SchedulingDecisionsWithReasonsV1 {
1135        pub on_refresh: Option<RefreshDecisionWithReasonV1>,
1136    }
1137
1138    #[derive(
1139        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1140    )]
1141    pub struct SchedulingDecisionsWithReasonsV2 {
1142        pub on_refresh: Option<RefreshDecisionWithReasonV2>,
1143    }
1144
1145    #[derive(
1146        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1147    )]
1148    pub struct RefreshDecisionWithReasonV1 {
1149        pub objects_needing_refresh: Vec<String>,
1150        pub rehydration_time_estimate: String,
1151        pub decision: Option<refresh_decision_with_reason_v1::Decision>,
1152    }
1153
1154    pub mod refresh_decision_with_reason_v1 {
1155        use super::*;
1156
1157        #[derive(
1158            Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1159        )]
1160        pub enum Decision {
1161            On(Empty),
1162            Off(Empty),
1163        }
1164    }
1165
1166    #[derive(
1167        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1168    )]
1169    pub struct RefreshDecisionWithReasonV2 {
1170        pub objects_needing_refresh: Vec<String>,
1171        pub objects_needing_compaction: Vec<String>,
1172        pub rehydration_time_estimate: String,
1173        pub decision: Option<refresh_decision_with_reason_v2::Decision>,
1174    }
1175
1176    pub mod refresh_decision_with_reason_v2 {
1177        use super::*;
1178
1179        #[derive(
1180            Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1181        )]
1182        pub enum Decision {
1183            On(Empty),
1184            Off(Empty),
1185        }
1186    }
1187
1188    #[derive(
1189        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1190    )]
1191    pub struct CreateSourceSinkV1 {
1192        pub id: String,
1193        pub name: Option<FullNameV1>,
1194        pub size: Option<StringWrapper>,
1195    }
1196
1197    #[derive(
1198        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1199    )]
1200    pub struct CreateSourceSinkV2 {
1201        pub id: String,
1202        pub name: Option<FullNameV1>,
1203        pub size: Option<StringWrapper>,
1204        pub external_type: String,
1205    }
1206
1207    #[derive(
1208        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1209    )]
1210    pub struct CreateSourceSinkV3 {
1211        pub id: String,
1212        pub name: Option<FullNameV1>,
1213        pub external_type: String,
1214    }
1215
1216    #[derive(
1217        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1218    )]
1219    pub struct CreateSourceSinkV4 {
1220        pub id: String,
1221        pub cluster_id: Option<StringWrapper>,
1222        pub name: Option<FullNameV1>,
1223        pub external_type: String,
1224    }
1225
1226    #[derive(
1227        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1228    )]
1229    pub struct CreateIndexV1 {
1230        pub id: String,
1231        pub cluster_id: String,
1232        pub name: Option<FullNameV1>,
1233    }
1234
1235    #[derive(
1236        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1237    )]
1238    pub struct CreateMaterializedViewV1 {
1239        pub id: String,
1240        pub cluster_id: String,
1241        pub name: Option<FullNameV1>,
1242    }
1243
1244    #[derive(
1245        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1246    )]
1247    pub struct AlterSourceSinkV1 {
1248        pub id: String,
1249        pub name: Option<FullNameV1>,
1250        pub old_size: Option<StringWrapper>,
1251        pub new_size: Option<StringWrapper>,
1252    }
1253
1254    #[derive(
1255        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1256    )]
1257    pub struct AlterSetClusterV1 {
1258        pub id: String,
1259        pub name: Option<FullNameV1>,
1260        pub old_cluster: Option<StringWrapper>,
1261        pub new_cluster: Option<StringWrapper>,
1262    }
1263
1264    #[derive(
1265        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1266    )]
1267    pub struct GrantRoleV1 {
1268        pub role_id: String,
1269        pub member_id: String,
1270        pub grantor_id: String,
1271    }
1272
1273    #[derive(
1274        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1275    )]
1276    pub struct GrantRoleV2 {
1277        pub role_id: String,
1278        pub member_id: String,
1279        pub grantor_id: String,
1280        pub executed_by: String,
1281    }
1282
1283    #[derive(
1284        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1285    )]
1286    pub struct RevokeRoleV1 {
1287        pub role_id: String,
1288        pub member_id: String,
1289    }
1290
1291    #[derive(
1292        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1293    )]
1294    pub struct RevokeRoleV2 {
1295        pub role_id: String,
1296        pub member_id: String,
1297        pub grantor_id: String,
1298        pub executed_by: String,
1299    }
1300
1301    #[derive(
1302        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1303    )]
1304    pub struct UpdatePrivilegeV1 {
1305        pub object_id: String,
1306        pub grantee_id: String,
1307        pub grantor_id: String,
1308        pub privileges: String,
1309    }
1310
1311    #[derive(
1312        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1313    )]
1314    pub struct AlterDefaultPrivilegeV1 {
1315        pub role_id: String,
1316        pub database_id: Option<StringWrapper>,
1317        pub schema_id: Option<StringWrapper>,
1318        pub grantee_id: String,
1319        pub privileges: String,
1320    }
1321
1322    #[derive(
1323        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1324    )]
1325    pub struct UpdateOwnerV1 {
1326        pub object_id: String,
1327        pub old_owner_id: String,
1328        pub new_owner_id: String,
1329    }
1330
1331    #[derive(
1332        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1333    )]
1334    pub struct SchemaV1 {
1335        pub id: String,
1336        pub name: String,
1337        pub database_name: String,
1338    }
1339
1340    #[derive(
1341        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1342    )]
1343    pub struct SchemaV2 {
1344        pub id: String,
1345        pub name: String,
1346        pub database_name: Option<StringWrapper>,
1347    }
1348
1349    #[derive(
1350        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1351    )]
1352    pub struct RenameSchemaV1 {
1353        pub id: String,
1354        pub database_name: Option<String>,
1355        pub old_name: String,
1356        pub new_name: String,
1357    }
1358
1359    #[derive(
1360        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1361    )]
1362    pub struct UpdateItemV1 {
1363        pub id: String,
1364        pub name: Option<FullNameV1>,
1365    }
1366
1367    #[derive(
1368        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1369    )]
1370    pub struct AlterRetainHistoryV1 {
1371        pub id: String,
1372        pub old_history: Option<String>,
1373        pub new_history: Option<String>,
1374    }
1375
1376    #[derive(
1377        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1378    )]
1379    pub struct ToNewIdV1 {
1380        pub id: String,
1381        pub new_id: String,
1382    }
1383
1384    #[derive(
1385        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1386    )]
1387    pub struct FromPreviousIdV1 {
1388        pub id: String,
1389        pub previous_id: String,
1390    }
1391
1392    #[derive(
1393        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1394    )]
1395    pub struct SetV1 {
1396        pub name: String,
1397        pub value: Option<String>,
1398    }
1399
1400    #[derive(
1401        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1402    )]
1403    pub struct RotateKeysV1 {
1404        pub id: String,
1405        pub name: String,
1406    }
1407
1408    #[derive(
1409        Clone,
1410        Copy,
1411        Debug,
1412        PartialEq,
1413        Eq,
1414        Hash,
1415        PartialOrd,
1416        Ord,
1417        Arbitrary,
1418        IntoPrimitive,
1419        TryFromPrimitive,
1420    )]
1421    #[repr(i32)]
1422    pub enum EventType {
1423        Unknown = 0,
1424        Create = 1,
1425        Drop = 2,
1426        Alter = 3,
1427        Grant = 4,
1428        Revoke = 5,
1429        Comment = 6,
1430    }
1431
1432    #[derive(
1433        Clone,
1434        Copy,
1435        Debug,
1436        PartialEq,
1437        Eq,
1438        Hash,
1439        PartialOrd,
1440        Ord,
1441        Arbitrary,
1442        IntoPrimitive,
1443        TryFromPrimitive,
1444    )]
1445    #[repr(i32)]
1446    pub enum ObjectType {
1447        Unknown = 0,
1448        Cluster = 1,
1449        ClusterReplica = 2,
1450        Connection = 3,
1451        Database = 4,
1452        Func = 5,
1453        Index = 6,
1454        MaterializedView = 7,
1455        Role = 8,
1456        Secret = 9,
1457        Schema = 10,
1458        Sink = 11,
1459        Source = 12,
1460        Table = 13,
1461        Type = 14,
1462        View = 15,
1463        System = 16,
1464        ContinualTask = 17,
1465        NetworkPolicy = 18,
1466    }
1467
1468    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1469    pub enum Details {
1470        CreateClusterReplicaV1(CreateClusterReplicaV1),
1471        CreateClusterReplicaV2(CreateClusterReplicaV2),
1472        CreateClusterReplicaV3(CreateClusterReplicaV3),
1473        CreateClusterReplicaV4(CreateClusterReplicaV4),
1474        DropClusterReplicaV1(DropClusterReplicaV1),
1475        DropClusterReplicaV2(DropClusterReplicaV2),
1476        DropClusterReplicaV3(DropClusterReplicaV3),
1477        CreateSourceSinkV1(CreateSourceSinkV1),
1478        CreateSourceSinkV2(CreateSourceSinkV2),
1479        AlterSourceSinkV1(AlterSourceSinkV1),
1480        AlterSetClusterV1(AlterSetClusterV1),
1481        GrantRoleV1(GrantRoleV1),
1482        GrantRoleV2(GrantRoleV2),
1483        RevokeRoleV1(RevokeRoleV1),
1484        RevokeRoleV2(RevokeRoleV2),
1485        UpdatePrivilegeV1(UpdatePrivilegeV1),
1486        AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1),
1487        UpdateOwnerV1(UpdateOwnerV1),
1488        IdFullNameV1(IdFullNameV1),
1489        RenameClusterV1(RenameClusterV1),
1490        RenameClusterReplicaV1(RenameClusterReplicaV1),
1491        RenameItemV1(RenameItemV1),
1492        IdNameV1(IdNameV1),
1493        SchemaV1(SchemaV1),
1494        SchemaV2(SchemaV2),
1495        RenameSchemaV1(RenameSchemaV1),
1496        UpdateItemV1(UpdateItemV1),
1497        CreateSourceSinkV3(CreateSourceSinkV3),
1498        AlterRetainHistoryV1(AlterRetainHistoryV1),
1499        ToNewIdV1(ToNewIdV1),
1500        FromPreviousIdV1(FromPreviousIdV1),
1501        SetV1(SetV1),
1502        ResetAllV1(Empty),
1503        RotateKeysV1(RotateKeysV1),
1504        CreateSourceSinkV4(CreateSourceSinkV4),
1505        CreateIndexV1(CreateIndexV1),
1506        CreateMaterializedViewV1(CreateMaterializedViewV1),
1507    }
1508}
1509
1510#[derive(
1511    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1512)]
1513pub struct StateUpdateKind {
1514    pub kind: Option<state_update_kind::Kind>,
1515}
1516
1517pub mod state_update_kind {
1518    use super::*;
1519
1520    #[derive(
1521        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1522    )]
1523    pub struct AuditLog {
1524        pub key: Option<AuditLogKey>,
1525    }
1526
1527    #[derive(
1528        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1529    )]
1530    pub struct Cluster {
1531        pub key: Option<ClusterKey>,
1532        pub value: Option<ClusterValue>,
1533    }
1534
1535    #[derive(
1536        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1537    )]
1538    pub struct ClusterReplica {
1539        pub key: Option<ClusterReplicaKey>,
1540        pub value: Option<ClusterReplicaValue>,
1541    }
1542
1543    #[derive(
1544        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1545    )]
1546    pub struct Comment {
1547        pub key: Option<CommentKey>,
1548        pub value: Option<CommentValue>,
1549    }
1550
1551    #[derive(
1552        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1553    )]
1554    pub struct Config {
1555        pub key: Option<ConfigKey>,
1556        pub value: Option<ConfigValue>,
1557    }
1558
1559    #[derive(
1560        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1561    )]
1562    pub struct Database {
1563        pub key: Option<DatabaseKey>,
1564        pub value: Option<DatabaseValue>,
1565    }
1566
1567    #[derive(
1568        Clone,
1569        Copy,
1570        Debug,
1571        Default,
1572        PartialEq,
1573        Eq,
1574        PartialOrd,
1575        Ord,
1576        Serialize,
1577        Deserialize,
1578        Arbitrary,
1579    )]
1580    pub struct DefaultPrivileges {
1581        pub key: Option<DefaultPrivilegesKey>,
1582        pub value: Option<DefaultPrivilegesValue>,
1583    }
1584
1585    #[derive(
1586        Clone,
1587        Copy,
1588        Debug,
1589        Default,
1590        PartialEq,
1591        Eq,
1592        PartialOrd,
1593        Ord,
1594        Serialize,
1595        Deserialize,
1596        Arbitrary,
1597    )]
1598    pub struct FenceToken {
1599        pub deploy_generation: u64,
1600        pub epoch: i64,
1601    }
1602
1603    #[derive(
1604        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1605    )]
1606    pub struct IdAlloc {
1607        pub key: Option<IdAllocKey>,
1608        pub value: Option<IdAllocValue>,
1609    }
1610
1611    #[derive(
1612        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1613    )]
1614    pub struct ClusterIntrospectionSourceIndex {
1615        pub key: Option<ClusterIntrospectionSourceIndexKey>,
1616        pub value: Option<ClusterIntrospectionSourceIndexValue>,
1617    }
1618
1619    #[derive(
1620        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1621    )]
1622    pub struct Item {
1623        pub key: Option<ItemKey>,
1624        pub value: Option<ItemValue>,
1625    }
1626
1627    #[derive(
1628        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1629    )]
1630    pub struct Role {
1631        pub key: Option<RoleKey>,
1632        pub value: Option<RoleValue>,
1633    }
1634
1635    #[derive(
1636        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1637    )]
1638    pub struct RoleAuth {
1639        pub key: Option<RoleAuthKey>,
1640        pub value: Option<RoleAuthValue>,
1641    }
1642
1643    #[derive(
1644        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1645    )]
1646    pub struct NetworkPolicy {
1647        pub key: Option<NetworkPolicyKey>,
1648        pub value: Option<NetworkPolicyValue>,
1649    }
1650
1651    #[derive(
1652        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1653    )]
1654    pub struct Schema {
1655        pub key: Option<SchemaKey>,
1656        pub value: Option<SchemaValue>,
1657    }
1658
1659    #[derive(
1660        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1661    )]
1662    pub struct Setting {
1663        pub key: Option<SettingKey>,
1664        pub value: Option<SettingValue>,
1665    }
1666
1667    #[derive(
1668        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1669    )]
1670    pub struct ServerConfiguration {
1671        pub key: Option<ServerConfigurationKey>,
1672        pub value: Option<ServerConfigurationValue>,
1673    }
1674
1675    #[derive(
1676        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1677    )]
1678    pub struct SourceReferences {
1679        pub key: Option<SourceReferencesKey>,
1680        pub value: Option<SourceReferencesValue>,
1681    }
1682
1683    #[derive(
1684        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1685    )]
1686    pub struct GidMapping {
1687        pub key: Option<GidMappingKey>,
1688        pub value: Option<GidMappingValue>,
1689    }
1690
1691    #[derive(
1692        Clone,
1693        Copy,
1694        Debug,
1695        Default,
1696        PartialEq,
1697        Eq,
1698        PartialOrd,
1699        Ord,
1700        Serialize,
1701        Deserialize,
1702        Arbitrary,
1703    )]
1704    pub struct SystemPrivileges {
1705        pub key: Option<SystemPrivilegesKey>,
1706        pub value: Option<SystemPrivilegesValue>,
1707    }
1708
1709    #[derive(
1710        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1711    )]
1712    pub struct StorageCollectionMetadata {
1713        pub key: Option<StorageCollectionMetadataKey>,
1714        pub value: Option<StorageCollectionMetadataValue>,
1715    }
1716
1717    #[derive(
1718        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1719    )]
1720    pub struct UnfinalizedShard {
1721        pub key: Option<UnfinalizedShardKey>,
1722    }
1723
1724    #[derive(
1725        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1726    )]
1727    pub struct TxnWalShard {
1728        pub value: Option<TxnWalShardValue>,
1729    }
1730
1731    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1732    // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up
1733    // persist pushdown statistics for success.
1734    #[serde(tag = "kind")]
1735    pub enum Kind {
1736        AuditLog(AuditLog),
1737        Cluster(Cluster),
1738        ClusterReplica(ClusterReplica),
1739        Comment(Comment),
1740        Config(Config),
1741        Database(Database),
1742        DefaultPrivileges(DefaultPrivileges),
1743        IdAlloc(IdAlloc),
1744        ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex),
1745        Item(Item),
1746        Role(Role),
1747        Schema(Schema),
1748        Setting(Setting),
1749        ServerConfiguration(ServerConfiguration),
1750        GidMapping(GidMapping),
1751        SystemPrivileges(SystemPrivileges),
1752        StorageCollectionMetadata(StorageCollectionMetadata),
1753        UnfinalizedShard(UnfinalizedShard),
1754        TxnWalShard(TxnWalShard),
1755        SourceReferences(SourceReferences),
1756        FenceToken(FenceToken),
1757        NetworkPolicy(NetworkPolicy),
1758        RoleAuth(RoleAuth),
1759    }
1760}
1761
1762#[derive(
1763    Clone,
1764    Copy,
1765    Debug,
1766    PartialEq,
1767    Eq,
1768    Hash,
1769    PartialOrd,
1770    Ord,
1771    Arbitrary,
1772    IntoPrimitive,
1773    TryFromPrimitive,
1774)]
1775#[repr(i32)]
1776pub enum CatalogItemType {
1777    Unknown = 0,
1778    Table = 1,
1779    Source = 2,
1780    Sink = 3,
1781    View = 4,
1782    MaterializedView = 5,
1783    Index = 6,
1784    Type = 7,
1785    Func = 8,
1786    Secret = 9,
1787    Connection = 10,
1788    ContinualTask = 11,
1789}
1790
1791#[derive(
1792    Clone,
1793    Copy,
1794    Debug,
1795    PartialEq,
1796    Eq,
1797    Hash,
1798    PartialOrd,
1799    Ord,
1800    Arbitrary,
1801    IntoPrimitive,
1802    TryFromPrimitive,
1803)]
1804#[repr(i32)]
1805pub enum ObjectType {
1806    Unknown = 0,
1807    Table = 1,
1808    View = 2,
1809    MaterializedView = 3,
1810    Source = 4,
1811    Sink = 5,
1812    Index = 6,
1813    Type = 7,
1814    Role = 8,
1815    Cluster = 9,
1816    ClusterReplica = 10,
1817    Secret = 11,
1818    Connection = 12,
1819    Database = 13,
1820    Schema = 14,
1821    Func = 15,
1822    ContinualTask = 16,
1823    NetworkPolicy = 17,
1824}