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