Skip to main content

perspective_client/
proto.rs

1// This file is @generated by prost-build.
2/// Recoverable, user-readable error reporting from the engine.
3#[derive(serde::Serialize)]
4#[allow(clippy::derive_partial_eq_without_eq)]
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct ServerError {
7    #[prost(string, tag = "1")]
8    pub message: ::prost::alloc::string::String,
9    #[prost(enumeration = "StatusCode", tag = "2")]
10    pub status_code: i32,
11}
12#[derive(serde::Serialize)]
13#[allow(clippy::derive_partial_eq_without_eq)]
14#[derive(Clone, PartialEq, ::prost::Message)]
15pub struct Schema {
16    #[prost(message, repeated, tag = "1")]
17    pub schema: ::prost::alloc::vec::Vec<schema::KeyTypePair>,
18}
19/// Nested message and enum types in `Schema`.
20pub mod schema {
21    #[derive(serde::Serialize)]
22    #[allow(clippy::derive_partial_eq_without_eq)]
23    #[derive(Clone, PartialEq, ::prost::Message)]
24    pub struct KeyTypePair {
25        #[prost(string, tag = "1")]
26        pub name: ::prost::alloc::string::String,
27        #[prost(enumeration = "super::ColumnType", tag = "2")]
28        pub r#type: i32,
29    }
30}
31/// The data type constructors Perspective supports.
32#[derive(serde::Serialize)]
33#[allow(clippy::derive_partial_eq_without_eq)]
34#[derive(Clone, PartialEq, ::prost::Message)]
35pub struct MakeTableData {
36    #[prost(oneof = "make_table_data::Data", tags = "1, 2, 3, 4, 5, 6, 7")]
37    pub data: ::core::option::Option<make_table_data::Data>,
38}
39/// Nested message and enum types in `MakeTableData`.
40pub mod make_table_data {
41    #[derive(serde::Serialize)]
42    #[allow(clippy::derive_partial_eq_without_eq)]
43    #[derive(Clone, PartialEq, ::prost::Oneof)]
44    pub enum Data {
45        #[prost(message, tag = "1")]
46        FromSchema(super::Schema),
47        #[prost(string, tag = "2")]
48        FromCsv(::prost::alloc::string::String),
49        #[prost(bytes, tag = "3")]
50        #[serde(skip)]
51        FromArrow(::prost::alloc::vec::Vec<u8>),
52        #[prost(string, tag = "4")]
53        FromRows(::prost::alloc::string::String),
54        #[prost(string, tag = "5")]
55        FromCols(::prost::alloc::string::String),
56        #[prost(string, tag = "6")]
57        FromView(::prost::alloc::string::String),
58        #[prost(string, tag = "7")]
59        FromNdjson(::prost::alloc::string::String),
60    }
61}
62/// Filter type scalars - this is _not_ the same as a Columns scalar, as this
63/// value is used in the view config and must be JSON safe!
64#[derive(serde::Serialize)]
65#[allow(clippy::derive_partial_eq_without_eq)]
66#[derive(Clone, PartialEq, ::prost::Message)]
67pub struct Scalar {
68    #[prost(oneof = "scalar::Scalar", tags = "1, 4, 6, 7")]
69    pub scalar: ::core::option::Option<scalar::Scalar>,
70}
71/// Nested message and enum types in `Scalar`.
72pub mod scalar {
73    #[derive(serde::Serialize)]
74    #[allow(clippy::derive_partial_eq_without_eq)]
75    #[derive(Clone, PartialEq, ::prost::Oneof)]
76    pub enum Scalar {
77        #[prost(bool, tag = "1")]
78        Bool(bool),
79        /// int64 date = 2; // TODO these are the wrong type
80        /// int64 datetime = 3;
81        #[prost(double, tag = "4")]
82        Float(f64),
83        /// int32 int = 5;
84        #[prost(string, tag = "6")]
85        String(::prost::alloc::string::String),
86        #[prost(enumeration = "::prost_types::NullValue", tag = "7")]
87        Null(i32),
88    }
89}
90/// Options for requresting a slice of data, starting with the rectangular
91/// viewport.
92#[derive(serde::Serialize)]
93#[derive(serde::Deserialize)]
94#[allow(clippy::derive_partial_eq_without_eq)]
95#[derive(Clone, PartialEq, ::prost::Message)]
96pub struct ViewPort {
97    #[prost(uint32, optional, tag = "1")]
98    pub start_row: ::core::option::Option<u32>,
99    #[prost(uint32, optional, tag = "2")]
100    pub start_col: ::core::option::Option<u32>,
101    #[prost(uint32, optional, tag = "3")]
102    pub end_row: ::core::option::Option<u32>,
103    #[prost(uint32, optional, tag = "4")]
104    pub end_col: ::core::option::Option<u32>,
105    ///    optional bool id = 5;
106    ///    optional bool index = 3;
107    ///    optional bool formatted = 6;
108    ///    optional bool leaves_only = 7;
109    ///    optional bool compression = 3;
110    #[prost(bool, optional, tag = "5")]
111    pub machine_column_names: ::core::option::Option<bool>,
112}
113#[derive(serde::Serialize)]
114#[allow(clippy::derive_partial_eq_without_eq)]
115#[derive(Clone, PartialEq, ::prost::Message)]
116pub struct Request {
117    #[prost(uint32, tag = "1")]
118    pub msg_id: u32,
119    #[prost(string, tag = "2")]
120    pub entity_id: ::prost::alloc::string::String,
121    #[prost(
122        oneof = "request::ClientReq",
123        tags = "3, 4, 37, 5, 6, 7, 8, 41, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 36, 27, 28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40"
124    )]
125    pub client_req: ::core::option::Option<request::ClientReq>,
126}
127/// Nested message and enum types in `Request`.
128pub mod request {
129    #[derive(serde::Serialize)]
130    #[allow(clippy::derive_partial_eq_without_eq)]
131    #[derive(Clone, PartialEq, ::prost::Oneof)]
132    pub enum ClientReq {
133        /// Minimum Virtual API (theoretical).
134        #[prost(message, tag = "3")]
135        GetFeaturesReq(super::GetFeaturesReq),
136        #[prost(message, tag = "4")]
137        GetHostedTablesReq(super::GetHostedTablesReq),
138        #[prost(message, tag = "37")]
139        RemoveHostedTablesUpdateReq(super::RemoveHostedTablesUpdateReq),
140        #[prost(message, tag = "5")]
141        TableMakePortReq(super::TableMakePortReq),
142        #[prost(message, tag = "6")]
143        TableMakeViewReq(super::TableMakeViewReq),
144        #[prost(message, tag = "7")]
145        TableSchemaReq(super::TableSchemaReq),
146        #[prost(message, tag = "8")]
147        TableSizeReq(super::TableSizeReq),
148        #[prost(message, tag = "41")]
149        TableDescribeReq(super::TableDescribeReq),
150        #[prost(message, tag = "10")]
151        ViewColumnPathsReq(super::ViewColumnPathsReq),
152        #[prost(message, tag = "11")]
153        ViewDeleteReq(super::ViewDeleteReq),
154        #[prost(message, tag = "12")]
155        ViewDimensionsReq(super::ViewDimensionsReq),
156        #[prost(message, tag = "13")]
157        ViewExpressionSchemaReq(super::ViewExpressionSchemaReq),
158        #[prost(message, tag = "14")]
159        ViewGetConfigReq(super::ViewGetConfigReq),
160        #[prost(message, tag = "15")]
161        ViewSchemaReq(super::ViewSchemaReq),
162        #[prost(message, tag = "16")]
163        ViewToArrowReq(super::ViewToArrowReq),
164        /// Optional (we can enable real-time/autocomplete/etc with these, but
165        /// not required).
166        #[prost(message, tag = "17")]
167        ServerSystemInfoReq(super::ServerSystemInfoReq),
168        #[prost(message, tag = "18")]
169        ViewCollapseReq(super::ViewCollapseReq),
170        #[prost(message, tag = "19")]
171        ViewExpandReq(super::ViewExpandReq),
172        #[prost(message, tag = "20")]
173        ViewGetMinMaxReq(super::ViewGetMinMaxReq),
174        #[prost(message, tag = "21")]
175        ViewOnUpdateReq(super::ViewOnUpdateReq),
176        #[prost(message, tag = "22")]
177        ViewRemoveOnUpdateReq(super::ViewRemoveOnUpdateReq),
178        #[prost(message, tag = "23")]
179        ViewSetDepthReq(super::ViewSetDepthReq),
180        #[prost(message, tag = "24")]
181        ViewToColumnsStringReq(super::ViewToColumnsStringReq),
182        #[prost(message, tag = "25")]
183        ViewToCsvReq(super::ViewToCsvReq),
184        #[prost(message, tag = "26")]
185        ViewToRowsStringReq(super::ViewToRowsStringReq),
186        #[prost(message, tag = "36")]
187        ViewToNdjsonStringReq(super::ViewToNdjsonStringReq),
188        /// External (we don't need these for viewer, but the developer may).
189        #[prost(message, tag = "27")]
190        MakeTableReq(super::MakeTableReq),
191        #[prost(message, tag = "28")]
192        TableDeleteReq(super::TableDeleteReq),
193        #[prost(message, tag = "29")]
194        TableOnDeleteReq(super::TableOnDeleteReq),
195        #[prost(message, tag = "30")]
196        TableRemoveDeleteReq(super::TableRemoveDeleteReq),
197        #[prost(message, tag = "31")]
198        TableRemoveReq(super::TableRemoveReq),
199        #[prost(message, tag = "32")]
200        TableReplaceReq(super::TableReplaceReq),
201        #[prost(message, tag = "33")]
202        TableUpdateReq(super::TableUpdateReq),
203        #[prost(message, tag = "34")]
204        ViewOnDeleteReq(super::ViewOnDeleteReq),
205        #[prost(message, tag = "35")]
206        ViewRemoveDeleteReq(super::ViewRemoveDeleteReq),
207        #[prost(message, tag = "38")]
208        MakeJoinTableReq(super::MakeJoinTableReq),
209        #[prost(message, tag = "39")]
210        ViewOnRemoveReq(super::ViewOnRemoveReq),
211        #[prost(message, tag = "40")]
212        ViewRemoveOnRemoveReq(super::ViewRemoveOnRemoveReq),
213    }
214}
215#[derive(serde::Serialize)]
216#[allow(clippy::derive_partial_eq_without_eq)]
217#[derive(Clone, PartialEq, ::prost::Message)]
218pub struct Response {
219    #[prost(uint32, tag = "1")]
220    pub msg_id: u32,
221    #[prost(string, tag = "2")]
222    pub entity_id: ::prost::alloc::string::String,
223    #[prost(
224        oneof = "response::ClientResp",
225        tags = "3, 4, 37, 5, 6, 7, 8, 41, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 36, 27, 28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 50"
226    )]
227    pub client_resp: ::core::option::Option<response::ClientResp>,
228}
229/// Nested message and enum types in `Response`.
230pub mod response {
231    #[derive(serde::Serialize)]
232    #[allow(clippy::derive_partial_eq_without_eq)]
233    #[derive(Clone, PartialEq, ::prost::Oneof)]
234    pub enum ClientResp {
235        #[prost(message, tag = "3")]
236        GetFeaturesResp(super::GetFeaturesResp),
237        #[prost(message, tag = "4")]
238        GetHostedTablesResp(super::GetHostedTablesResp),
239        #[prost(message, tag = "37")]
240        RemoveHostedTablesUpdateResp(super::RemoveHostedTablesUpdateResp),
241        #[prost(message, tag = "5")]
242        TableMakePortResp(super::TableMakePortResp),
243        #[prost(message, tag = "6")]
244        TableMakeViewResp(super::TableMakeViewResp),
245        #[prost(message, tag = "7")]
246        TableSchemaResp(super::TableSchemaResp),
247        #[prost(message, tag = "8")]
248        TableSizeResp(super::TableSizeResp),
249        #[prost(message, tag = "41")]
250        TableDescribeResp(super::TableDescribeResp),
251        #[prost(message, tag = "10")]
252        ViewColumnPathsResp(super::ViewColumnPathsResp),
253        #[prost(message, tag = "11")]
254        ViewDeleteResp(super::ViewDeleteResp),
255        #[prost(message, tag = "12")]
256        ViewDimensionsResp(super::ViewDimensionsResp),
257        #[prost(message, tag = "13")]
258        ViewExpressionSchemaResp(super::ViewExpressionSchemaResp),
259        #[prost(message, tag = "14")]
260        ViewGetConfigResp(super::ViewGetConfigResp),
261        #[prost(message, tag = "15")]
262        ViewSchemaResp(super::ViewSchemaResp),
263        #[prost(message, tag = "16")]
264        ViewToArrowResp(super::ViewToArrowResp),
265        #[prost(message, tag = "17")]
266        ServerSystemInfoResp(super::ServerSystemInfoResp),
267        #[prost(message, tag = "18")]
268        ViewCollapseResp(super::ViewCollapseResp),
269        #[prost(message, tag = "19")]
270        ViewExpandResp(super::ViewExpandResp),
271        #[prost(message, tag = "20")]
272        ViewGetMinMaxResp(super::ViewGetMinMaxResp),
273        #[prost(message, tag = "21")]
274        ViewOnUpdateResp(super::ViewOnUpdateResp),
275        #[prost(message, tag = "22")]
276        ViewRemoveOnUpdateResp(super::ViewRemoveOnUpdateResp),
277        #[prost(message, tag = "23")]
278        ViewSetDepthResp(super::ViewSetDepthResp),
279        #[prost(message, tag = "24")]
280        ViewToColumnsStringResp(super::ViewToColumnsStringResp),
281        #[prost(message, tag = "25")]
282        ViewToCsvResp(super::ViewToCsvResp),
283        #[prost(message, tag = "26")]
284        ViewToRowsStringResp(super::ViewToRowsStringResp),
285        #[prost(message, tag = "36")]
286        ViewToNdjsonStringResp(super::ViewToNdjsonStringResp),
287        #[prost(message, tag = "27")]
288        MakeTableResp(super::MakeTableResp),
289        #[prost(message, tag = "28")]
290        TableDeleteResp(super::TableDeleteResp),
291        #[prost(message, tag = "29")]
292        TableOnDeleteResp(super::TableOnDeleteResp),
293        #[prost(message, tag = "30")]
294        TableRemoveDeleteResp(super::TableRemoveDeleteResp),
295        #[prost(message, tag = "31")]
296        TableRemoveResp(super::TableRemoveResp),
297        #[prost(message, tag = "32")]
298        TableReplaceResp(super::TableReplaceResp),
299        #[prost(message, tag = "33")]
300        TableUpdateResp(super::TableUpdateResp),
301        #[prost(message, tag = "34")]
302        ViewOnDeleteResp(super::ViewOnDeleteResp),
303        #[prost(message, tag = "35")]
304        ViewRemoveDeleteResp(super::ViewRemoveDeleteResp),
305        #[prost(message, tag = "38")]
306        MakeJoinTableResp(super::MakeJoinTableResp),
307        #[prost(message, tag = "39")]
308        ViewOnRemoveResp(super::ViewOnRemoveResp),
309        #[prost(message, tag = "40")]
310        ViewRemoveOnRemoveResp(super::ViewRemoveOnRemoveResp),
311        #[prost(message, tag = "50")]
312        ServerError(super::ServerError),
313    }
314}
315/// Informs the client of the feature set, e.g. what to expect in the
316/// `ViewConfig` message.
317#[derive(serde::Serialize)]
318#[allow(clippy::derive_partial_eq_without_eq)]
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct GetFeaturesReq {}
321#[derive(serde::Serialize)]
322#[allow(clippy::derive_partial_eq_without_eq)]
323#[derive(Clone, PartialEq, ::prost::Message)]
324pub struct GetFeaturesResp {
325    #[prost(bool, tag = "1")]
326    pub group_by: bool,
327    #[prost(bool, tag = "2")]
328    pub split_by: bool,
329    #[prost(bool, tag = "3")]
330    pub expressions: bool,
331    #[prost(bool, tag = "4")]
332    pub on_update: bool,
333    #[prost(bool, tag = "5")]
334    pub sort: bool,
335    #[prost(map = "uint32, message", tag = "6")]
336    pub filter_ops: ::std::collections::HashMap<
337        u32,
338        get_features_resp::ColumnTypeOptions,
339    >,
340    #[prost(map = "uint32, message", tag = "7")]
341    pub aggregates: ::std::collections::HashMap<
342        u32,
343        get_features_resp::AggregateOptions,
344    >,
345    #[prost(enumeration = "GroupRollupMode", repeated, tag = "8")]
346    pub group_rollup_mode: ::prost::alloc::vec::Vec<i32>,
347    #[prost(map = "uint32, message", tag = "9")]
348    pub window_aggregates: ::std::collections::HashMap<
349        u32,
350        get_features_resp::WindowAggregateOptions,
351    >,
352    #[prost(bool, tag = "10")]
353    pub unordered: bool,
354    #[prost(enumeration = "SplitRollupMode", repeated, tag = "11")]
355    pub split_rollup_mode: ::prost::alloc::vec::Vec<i32>,
356    /// Whether a `Table` can be derived from a `View` of this server.
357    #[prost(bool, tag = "12")]
358    pub view_derivations: bool,
359    /// Whether `View::expand`, `View::collapse` and `View::set_depth` are
360    /// supported for `group_by` views of this server.
361    #[prost(bool, tag = "13")]
362    pub expand_collapse: bool,
363    /// Whether `Table::update` is supported for `Table`s of this server.
364    #[prost(bool, tag = "14")]
365    pub update: bool,
366}
367/// Nested message and enum types in `GetFeaturesResp`.
368pub mod get_features_resp {
369    #[derive(serde::Serialize)]
370    #[allow(clippy::derive_partial_eq_without_eq)]
371    #[derive(Clone, PartialEq, ::prost::Message)]
372    pub struct WindowAggregateOptions {
373        #[prost(message, repeated, tag = "1")]
374        pub options: ::prost::alloc::vec::Vec<super::WindowAggregateArgs>,
375    }
376    #[derive(serde::Serialize)]
377    #[allow(clippy::derive_partial_eq_without_eq)]
378    #[derive(Clone, PartialEq, ::prost::Message)]
379    pub struct ColumnTypeOptions {
380        #[prost(string, repeated, tag = "1")]
381        pub options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
382    }
383    #[derive(serde::Serialize)]
384    #[allow(clippy::derive_partial_eq_without_eq)]
385    #[derive(Clone, PartialEq, ::prost::Message)]
386    pub struct AggregateOptions {
387        #[prost(message, repeated, tag = "1")]
388        pub aggregates: ::prost::alloc::vec::Vec<AggregateArgs>,
389    }
390    #[derive(serde::Serialize)]
391    #[allow(clippy::derive_partial_eq_without_eq)]
392    #[derive(Clone, PartialEq, ::prost::Message)]
393    pub struct AggregateArgs {
394        #[prost(string, tag = "1")]
395        pub name: ::prost::alloc::string::String,
396        #[prost(enumeration = "super::ColumnType", repeated, tag = "2")]
397        pub args: ::prost::alloc::vec::Vec<i32>,
398    }
399}
400#[derive(serde::Serialize)]
401#[allow(clippy::derive_partial_eq_without_eq)]
402#[derive(Clone, PartialEq, ::prost::Message)]
403pub struct WindowAggregateArgs {
404    #[prost(string, tag = "1")]
405    pub name: ::prost::alloc::string::String,
406    #[prost(string, repeated, tag = "2")]
407    pub frames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
408    #[prost(bool, tag = "3")]
409    pub offset: bool,
410    #[prost(bool, tag = "4")]
411    pub alpha: bool,
412    #[prost(enumeration = "ColumnType", optional, tag = "5")]
413    pub result_type: ::core::option::Option<i32>,
414}
415/// `Client::get_hosted_tables`
416#[derive(serde::Serialize)]
417#[allow(clippy::derive_partial_eq_without_eq)]
418#[derive(Clone, PartialEq, ::prost::Message)]
419pub struct GetHostedTablesReq {
420    #[prost(bool, tag = "1")]
421    pub subscribe: bool,
422}
423#[derive(serde::Serialize)]
424#[allow(clippy::derive_partial_eq_without_eq)]
425#[derive(Clone, PartialEq, ::prost::Message)]
426pub struct GetHostedTablesResp {
427    #[prost(message, repeated, tag = "1")]
428    pub table_infos: ::prost::alloc::vec::Vec<HostedTable>,
429}
430#[derive(serde::Serialize)]
431#[allow(clippy::derive_partial_eq_without_eq)]
432#[derive(Clone, PartialEq, ::prost::Message)]
433pub struct HostedTable {
434    #[prost(string, tag = "1")]
435    pub entity_id: ::prost::alloc::string::String,
436    #[prost(string, repeated, tag = "2")]
437    pub index: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
438    #[prost(uint32, optional, tag = "3")]
439    pub limit: ::core::option::Option<u32>,
440}
441#[derive(serde::Serialize)]
442#[allow(clippy::derive_partial_eq_without_eq)]
443#[derive(Clone, PartialEq, ::prost::Message)]
444pub struct RemoveHostedTablesUpdateReq {
445    #[prost(uint32, tag = "1")]
446    pub id: u32,
447}
448#[derive(serde::Serialize)]
449#[allow(clippy::derive_partial_eq_without_eq)]
450#[derive(Clone, PartialEq, ::prost::Message)]
451pub struct RemoveHostedTablesUpdateResp {}
452/// `Table::size`
453#[derive(serde::Serialize)]
454#[allow(clippy::derive_partial_eq_without_eq)]
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct TableSizeReq {}
457#[derive(serde::Serialize)]
458#[allow(clippy::derive_partial_eq_without_eq)]
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct TableSizeResp {
461    #[prost(uint32, tag = "2")]
462    pub size: u32,
463}
464/// `Table::schema`
465#[derive(serde::Serialize)]
466#[allow(clippy::derive_partial_eq_without_eq)]
467#[derive(Clone, PartialEq, ::prost::Message)]
468pub struct TableSchemaReq {}
469#[derive(serde::Serialize)]
470#[allow(clippy::derive_partial_eq_without_eq)]
471#[derive(Clone, PartialEq, ::prost::Message)]
472pub struct TableSchemaResp {
473    #[prost(message, optional, tag = "1")]
474    pub schema: ::core::option::Option<Schema>,
475}
476/// `Table::describe` - validate a complete `ViewConfig` against this table and
477/// report its result schema, without creating a `View`.
478#[derive(serde::Serialize)]
479#[allow(clippy::derive_partial_eq_without_eq)]
480#[derive(Clone, PartialEq, ::prost::Message)]
481pub struct TableDescribeReq {
482    #[prost(message, optional, tag = "1")]
483    pub config: ::core::option::Option<ViewConfig>,
484}
485#[derive(serde::Serialize)]
486#[derive(serde::Deserialize)]
487#[allow(clippy::derive_partial_eq_without_eq)]
488#[derive(Clone, PartialEq, ::prost::Message)]
489pub struct TableDescribeResp {
490    /// Every VALID expression's type, whether or not the config as a whole is
491    /// valid.
492    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
493    pub expression_schema: ::std::collections::HashMap<
494        ::prost::alloc::string::String,
495        i32,
496    >,
497    #[prost(map = "string, message", tag = "2")]
498    pub expression_errors: ::std::collections::HashMap<
499        ::prost::alloc::string::String,
500        ExpressionError,
501    >,
502    #[prost(oneof = "table_describe_resp::Result", tags = "3, 4")]
503    pub result: ::core::option::Option<table_describe_resp::Result>,
504}
505/// Nested message and enum types in `TableDescribeResp`.
506pub mod table_describe_resp {
507    #[derive(serde::Serialize)]
508    #[derive(serde::Deserialize)]
509    #[allow(clippy::derive_partial_eq_without_eq)]
510    #[derive(Clone, PartialEq, ::prost::Oneof)]
511    pub enum Result {
512        /// Present IFF `expression_errors` is empty and the whole config is
513        /// valid.
514        #[prost(message, tag = "3")]
515        View(super::ViewDescription),
516        /// The first non-expression config error, when the expressions are all
517        /// valid but the config is not.
518        #[prost(string, tag = "4")]
519        ConfigError(::prost::alloc::string::String),
520    }
521}
522#[derive(serde::Serialize)]
523#[derive(serde::Deserialize)]
524#[allow(clippy::derive_partial_eq_without_eq)]
525#[derive(Clone, PartialEq, ::prost::Message)]
526pub struct ViewDescription {
527    /// Equal to `View::schema()` of a `View` built from the same config.
528    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
529    pub schema: ::std::collections::HashMap<::prost::alloc::string::String, i32>,
530}
531#[derive(serde::Serialize)]
532#[derive(serde::Deserialize)]
533#[allow(clippy::derive_partial_eq_without_eq)]
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct ExpressionError {
536    #[prost(string, tag = "1")]
537    pub error_message: ::prost::alloc::string::String,
538    #[prost(uint32, tag = "2")]
539    pub line: u32,
540    #[prost(uint32, tag = "3")]
541    pub column: u32,
542}
543/// `Table::view`
544#[derive(serde::Serialize)]
545#[allow(clippy::derive_partial_eq_without_eq)]
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct TableMakeViewReq {
548    #[prost(string, tag = "1")]
549    pub view_id: ::prost::alloc::string::String,
550    #[prost(message, optional, tag = "2")]
551    pub config: ::core::option::Option<ViewConfig>,
552}
553#[derive(serde::Serialize)]
554#[allow(clippy::derive_partial_eq_without_eq)]
555#[derive(Clone, PartialEq, ::prost::Message)]
556pub struct TableMakeViewResp {
557    #[prost(string, tag = "1")]
558    pub view_id: ::prost::alloc::string::String,
559}
560/// `View::schema`
561#[derive(serde::Serialize)]
562#[allow(clippy::derive_partial_eq_without_eq)]
563#[derive(Clone, PartialEq, ::prost::Message)]
564pub struct ViewSchemaReq {}
565#[derive(serde::Serialize)]
566#[allow(clippy::derive_partial_eq_without_eq)]
567#[derive(Clone, PartialEq, ::prost::Message)]
568pub struct ViewSchemaResp {
569    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
570    pub schema: ::std::collections::HashMap<::prost::alloc::string::String, i32>,
571}
572/// `View::dimensions`
573#[derive(serde::Serialize)]
574#[allow(clippy::derive_partial_eq_without_eq)]
575#[derive(Clone, PartialEq, ::prost::Message)]
576pub struct ViewDimensionsReq {}
577#[derive(serde::Serialize)]
578#[derive(serde::Deserialize)]
579#[allow(clippy::derive_partial_eq_without_eq)]
580#[derive(Clone, PartialEq, ::prost::Message)]
581pub struct ViewDimensionsResp {
582    #[prost(uint32, tag = "1")]
583    pub num_table_rows: u32,
584    #[prost(uint32, tag = "2")]
585    pub num_table_columns: u32,
586    #[prost(uint32, tag = "3")]
587    pub num_view_rows: u32,
588    #[prost(uint32, tag = "4")]
589    pub num_view_columns: u32,
590}
591/// `View::get_config`
592#[derive(serde::Serialize)]
593#[allow(clippy::derive_partial_eq_without_eq)]
594#[derive(Clone, PartialEq, ::prost::Message)]
595pub struct ViewGetConfigReq {}
596#[derive(serde::Serialize)]
597#[allow(clippy::derive_partial_eq_without_eq)]
598#[derive(Clone, PartialEq, ::prost::Message)]
599pub struct ViewGetConfigResp {
600    #[prost(message, optional, tag = "1")]
601    pub config: ::core::option::Option<ViewConfig>,
602}
603/// The columns of a composite `index`, in key order.
604#[derive(serde::Serialize)]
605#[allow(clippy::derive_partial_eq_without_eq)]
606#[derive(Clone, PartialEq, ::prost::Message)]
607pub struct IndexColumns {
608    #[prost(string, repeated, tag = "1")]
609    pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
610}
611/// `Client::table`.
612#[derive(serde::Serialize)]
613#[allow(clippy::derive_partial_eq_without_eq)]
614#[derive(Clone, PartialEq, ::prost::Message)]
615pub struct MakeTableReq {
616    #[prost(message, optional, tag = "1")]
617    pub data: ::core::option::Option<MakeTableData>,
618    #[prost(message, optional, tag = "2")]
619    pub options: ::core::option::Option<make_table_req::MakeTableOptions>,
620}
621/// Nested message and enum types in `MakeTableReq`.
622pub mod make_table_req {
623    #[derive(serde::Serialize)]
624    #[allow(clippy::derive_partial_eq_without_eq)]
625    #[derive(Clone, PartialEq, ::prost::Message)]
626    pub struct MakeTableOptions {
627        /// Back this Table's canonical data with the on-disk storage backend
628        /// (memory-mapped file on native; OPFS on WASM) instead of memory.
629        /// Orthogonal to `make_table_type`, so it is a standalone field.
630        #[prost(bool, optional, tag = "3")]
631        pub page_to_disk: ::core::option::Option<bool>,
632        #[prost(enumeration = "super::ListFlatten", optional, tag = "4")]
633        pub list_flatten: ::core::option::Option<i32>,
634        #[prost(enumeration = "super::StructFlatten", optional, tag = "7")]
635        pub struct_flatten: ::core::option::Option<i32>,
636        /// Unset falls back to `struct_flatten`.
637        #[prost(enumeration = "super::MapFlatten", optional, tag = "8")]
638        pub map_flatten: ::core::option::Option<i32>,
639        /// The columns of a `Table` made from a `View`, in place of the ones
640        /// inferred from it. Only valid with `MakeTableData.from_view`.
641        #[prost(message, optional, tag = "5")]
642        pub view_schema: ::core::option::Option<super::Schema>,
643        #[prost(oneof = "make_table_options::MakeTableType", tags = "1, 2, 6")]
644        pub make_table_type: ::core::option::Option<make_table_options::MakeTableType>,
645    }
646    /// Nested message and enum types in `MakeTableOptions`.
647    pub mod make_table_options {
648        #[derive(serde::Serialize)]
649        #[allow(clippy::derive_partial_eq_without_eq)]
650        #[derive(Clone, PartialEq, ::prost::Oneof)]
651        pub enum MakeTableType {
652            #[prost(string, tag = "1")]
653            MakeIndexTable(::prost::alloc::string::String),
654            #[prost(uint32, tag = "2")]
655            MakeLimitTable(u32),
656            #[prost(message, tag = "6")]
657            MakeCompositeIndexTable(super::super::IndexColumns),
658        }
659    }
660}
661#[derive(serde::Serialize)]
662#[allow(clippy::derive_partial_eq_without_eq)]
663#[derive(Clone, PartialEq, ::prost::Message)]
664pub struct MakeTableResp {}
665/// `Client::join` — create a read-only table from a JOIN of two tables.
666#[derive(serde::Serialize)]
667#[allow(clippy::derive_partial_eq_without_eq)]
668#[derive(Clone, PartialEq, ::prost::Message)]
669pub struct MakeJoinTableReq {
670    #[prost(string, tag = "1")]
671    pub left_table_id: ::prost::alloc::string::String,
672    #[prost(string, tag = "2")]
673    pub right_table_id: ::prost::alloc::string::String,
674    #[prost(string, tag = "3")]
675    pub on_column: ::prost::alloc::string::String,
676    #[prost(enumeration = "JoinType", tag = "4")]
677    pub join_type: i32,
678    #[prost(string, tag = "5")]
679    pub right_on_column: ::prost::alloc::string::String,
680}
681#[derive(serde::Serialize)]
682#[allow(clippy::derive_partial_eq_without_eq)]
683#[derive(Clone, PartialEq, ::prost::Message)]
684pub struct MakeJoinTableResp {}
685/// `Table::delete`
686#[derive(serde::Serialize)]
687#[allow(clippy::derive_partial_eq_without_eq)]
688#[derive(Clone, PartialEq, ::prost::Message)]
689pub struct TableDeleteReq {
690    #[prost(bool, tag = "1")]
691    pub is_immediate: bool,
692}
693#[derive(serde::Serialize)]
694#[allow(clippy::derive_partial_eq_without_eq)]
695#[derive(Clone, PartialEq, ::prost::Message)]
696pub struct TableDeleteResp {}
697/// `Table::on_delete`
698#[derive(serde::Serialize)]
699#[allow(clippy::derive_partial_eq_without_eq)]
700#[derive(Clone, PartialEq, ::prost::Message)]
701pub struct TableOnDeleteReq {}
702#[derive(serde::Serialize)]
703#[allow(clippy::derive_partial_eq_without_eq)]
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct TableOnDeleteResp {}
706/// `Table::make_port`
707#[derive(serde::Serialize)]
708#[allow(clippy::derive_partial_eq_without_eq)]
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct TableMakePortReq {}
711#[derive(serde::Serialize)]
712#[allow(clippy::derive_partial_eq_without_eq)]
713#[derive(Clone, PartialEq, ::prost::Message)]
714pub struct TableMakePortResp {
715    #[prost(uint32, tag = "1")]
716    pub port_id: u32,
717}
718/// `Table::remove_delete`
719#[derive(serde::Serialize)]
720#[allow(clippy::derive_partial_eq_without_eq)]
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct TableRemoveDeleteReq {
723    #[prost(uint32, tag = "1")]
724    pub id: u32,
725}
726#[derive(serde::Serialize)]
727#[allow(clippy::derive_partial_eq_without_eq)]
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct TableRemoveDeleteResp {}
730/// `View::on_remove`
731#[derive(serde::Serialize)]
732#[allow(clippy::derive_partial_eq_without_eq)]
733#[derive(Clone, PartialEq, ::prost::Message)]
734pub struct ViewOnRemoveReq {}
735#[derive(serde::Serialize)]
736#[allow(clippy::derive_partial_eq_without_eq)]
737#[derive(Clone, PartialEq, ::prost::Message)]
738pub struct ViewOnRemoveResp {
739    #[prost(bytes = "vec", optional, tag = "1")]
740    #[serde(with = "serde_bytes")]
741    pub indices: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
742    #[prost(uint32, tag = "2")]
743    pub port_id: u32,
744    #[prost(enumeration = "view_on_remove_resp::Cause", tag = "3")]
745    pub cause: i32,
746}
747/// Nested message and enum types in `ViewOnRemoveResp`.
748pub mod view_on_remove_resp {
749    #[derive(serde::Serialize)]
750    #[derive(
751        Clone,
752        Copy,
753        Debug,
754        PartialEq,
755        Eq,
756        Hash,
757        PartialOrd,
758        Ord,
759        ::prost::Enumeration
760    )]
761    #[repr(i32)]
762    pub enum Cause {
763        Key = 0,
764        Group = 1,
765        Filter = 2,
766    }
767    impl Cause {
768        /// String value of the enum field names used in the ProtoBuf definition.
769        ///
770        /// The values are not transformed in any way and thus are considered stable
771        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
772        pub fn as_str_name(&self) -> &'static str {
773            match self {
774                Cause::Key => "KEY",
775                Cause::Group => "GROUP",
776                Cause::Filter => "FILTER",
777            }
778        }
779        /// Creates an enum from field names used in the ProtoBuf definition.
780        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
781            match value {
782                "KEY" => Some(Self::Key),
783                "GROUP" => Some(Self::Group),
784                "FILTER" => Some(Self::Filter),
785                _ => None,
786            }
787        }
788    }
789}
790/// `View::remove_remove`
791#[derive(serde::Serialize)]
792#[allow(clippy::derive_partial_eq_without_eq)]
793#[derive(Clone, PartialEq, ::prost::Message)]
794pub struct ViewRemoveOnRemoveReq {
795    #[prost(uint32, tag = "1")]
796    pub id: u32,
797}
798#[derive(serde::Serialize)]
799#[allow(clippy::derive_partial_eq_without_eq)]
800#[derive(Clone, PartialEq, ::prost::Message)]
801pub struct ViewRemoveOnRemoveResp {}
802/// `Table::update`
803#[derive(serde::Serialize)]
804#[allow(clippy::derive_partial_eq_without_eq)]
805#[derive(Clone, PartialEq, ::prost::Message)]
806pub struct TableUpdateReq {
807    #[prost(message, optional, tag = "1")]
808    pub data: ::core::option::Option<MakeTableData>,
809    #[prost(uint32, tag = "2")]
810    pub port_id: u32,
811}
812#[derive(serde::Serialize)]
813#[allow(clippy::derive_partial_eq_without_eq)]
814#[derive(Clone, PartialEq, ::prost::Message)]
815pub struct TableUpdateResp {}
816/// `Table::replace`
817#[derive(serde::Serialize)]
818#[allow(clippy::derive_partial_eq_without_eq)]
819#[derive(Clone, PartialEq, ::prost::Message)]
820pub struct TableReplaceReq {
821    #[prost(message, optional, tag = "1")]
822    pub data: ::core::option::Option<MakeTableData>,
823}
824#[derive(serde::Serialize)]
825#[allow(clippy::derive_partial_eq_without_eq)]
826#[derive(Clone, PartialEq, ::prost::Message)]
827pub struct TableReplaceResp {}
828/// `Table::remove`
829#[derive(serde::Serialize)]
830#[allow(clippy::derive_partial_eq_without_eq)]
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct TableRemoveReq {
833    #[prost(message, optional, tag = "1")]
834    pub data: ::core::option::Option<MakeTableData>,
835}
836#[derive(serde::Serialize)]
837#[allow(clippy::derive_partial_eq_without_eq)]
838#[derive(Clone, PartialEq, ::prost::Message)]
839pub struct TableRemoveResp {}
840#[derive(serde::Serialize)]
841#[allow(clippy::derive_partial_eq_without_eq)]
842#[derive(Clone, PartialEq, ::prost::Message)]
843pub struct ViewOnUpdateReq {
844    #[prost(enumeration = "view_on_update_req::Mode", optional, tag = "1")]
845    pub mode: ::core::option::Option<i32>,
846}
847/// Nested message and enum types in `ViewOnUpdateReq`.
848pub mod view_on_update_req {
849    #[derive(serde::Serialize)]
850    #[derive(
851        Clone,
852        Copy,
853        Debug,
854        PartialEq,
855        Eq,
856        Hash,
857        PartialOrd,
858        Ord,
859        ::prost::Enumeration
860    )]
861    #[repr(i32)]
862    pub enum Mode {
863        Row = 0,
864    }
865    impl Mode {
866        /// String value of the enum field names used in the ProtoBuf definition.
867        ///
868        /// The values are not transformed in any way and thus are considered stable
869        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
870        pub fn as_str_name(&self) -> &'static str {
871            match self {
872                Mode::Row => "ROW",
873            }
874        }
875        /// Creates an enum from field names used in the ProtoBuf definition.
876        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
877            match value {
878                "ROW" => Some(Self::Row),
879                _ => None,
880            }
881        }
882    }
883}
884#[derive(ts_rs::TS)]
885#[derive(serde::Serialize)]
886#[allow(clippy::derive_partial_eq_without_eq)]
887#[derive(Clone, PartialEq, ::prost::Message)]
888pub struct ViewOnUpdateResp {
889    #[prost(bytes = "vec", optional, tag = "1")]
890    #[ts(type = "Uint8Array | undefined")]
891    #[serde(with = "serde_bytes")]
892    pub delta: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
893    #[prost(uint32, tag = "2")]
894    pub port_id: u32,
895    #[prost(bool, tag = "3")]
896    pub reset: bool,
897}
898#[derive(serde::Serialize)]
899#[allow(clippy::derive_partial_eq_without_eq)]
900#[derive(Clone, PartialEq, ::prost::Message)]
901pub struct ViewOnDeleteReq {}
902#[derive(serde::Serialize)]
903#[allow(clippy::derive_partial_eq_without_eq)]
904#[derive(Clone, PartialEq, ::prost::Message)]
905pub struct ViewOnDeleteResp {}
906#[derive(serde::Serialize)]
907#[allow(clippy::derive_partial_eq_without_eq)]
908#[derive(Clone, PartialEq, ::prost::Message)]
909pub struct ViewRemoveDeleteReq {
910    #[prost(uint32, tag = "1")]
911    pub id: u32,
912}
913#[derive(serde::Serialize)]
914#[allow(clippy::derive_partial_eq_without_eq)]
915#[derive(Clone, PartialEq, ::prost::Message)]
916pub struct ViewRemoveDeleteResp {}
917#[derive(serde::Serialize)]
918#[allow(clippy::derive_partial_eq_without_eq)]
919#[derive(Clone, PartialEq, ::prost::Message)]
920pub struct ViewToColumnsStringReq {
921    #[prost(message, optional, tag = "1")]
922    pub viewport: ::core::option::Option<ViewPort>,
923    #[prost(bool, optional, tag = "2")]
924    pub id: ::core::option::Option<bool>,
925    #[prost(bool, optional, tag = "3")]
926    pub index: ::core::option::Option<bool>,
927    #[prost(bool, optional, tag = "4")]
928    pub formatted: ::core::option::Option<bool>,
929}
930#[derive(serde::Serialize)]
931#[allow(clippy::derive_partial_eq_without_eq)]
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct ViewToColumnsStringResp {
934    #[prost(string, tag = "1")]
935    pub json_string: ::prost::alloc::string::String,
936}
937#[derive(serde::Serialize)]
938#[allow(clippy::derive_partial_eq_without_eq)]
939#[derive(Clone, PartialEq, ::prost::Message)]
940pub struct ViewToRowsStringReq {
941    #[prost(message, optional, tag = "1")]
942    pub viewport: ::core::option::Option<ViewPort>,
943    #[prost(bool, optional, tag = "2")]
944    pub id: ::core::option::Option<bool>,
945    #[prost(bool, optional, tag = "3")]
946    pub index: ::core::option::Option<bool>,
947    #[prost(bool, optional, tag = "4")]
948    pub formatted: ::core::option::Option<bool>,
949}
950#[derive(serde::Serialize)]
951#[allow(clippy::derive_partial_eq_without_eq)]
952#[derive(Clone, PartialEq, ::prost::Message)]
953pub struct ViewToRowsStringResp {
954    #[prost(string, tag = "1")]
955    pub json_string: ::prost::alloc::string::String,
956}
957#[derive(serde::Serialize)]
958#[allow(clippy::derive_partial_eq_without_eq)]
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct ViewToNdjsonStringReq {
961    #[prost(message, optional, tag = "1")]
962    pub viewport: ::core::option::Option<ViewPort>,
963    #[prost(bool, optional, tag = "2")]
964    pub id: ::core::option::Option<bool>,
965    #[prost(bool, optional, tag = "3")]
966    pub index: ::core::option::Option<bool>,
967    #[prost(bool, optional, tag = "4")]
968    pub formatted: ::core::option::Option<bool>,
969}
970#[derive(serde::Serialize)]
971#[allow(clippy::derive_partial_eq_without_eq)]
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct ViewToNdjsonStringResp {
974    #[prost(string, tag = "1")]
975    pub ndjson_string: ::prost::alloc::string::String,
976}
977#[derive(serde::Serialize)]
978#[allow(clippy::derive_partial_eq_without_eq)]
979#[derive(Clone, PartialEq, ::prost::Message)]
980pub struct ViewToArrowReq {
981    #[prost(message, optional, tag = "1")]
982    pub viewport: ::core::option::Option<ViewPort>,
983    #[prost(string, optional, tag = "2")]
984    pub compression: ::core::option::Option<::prost::alloc::string::String>,
985}
986#[derive(serde::Serialize)]
987#[allow(clippy::derive_partial_eq_without_eq)]
988#[derive(Clone, PartialEq, ::prost::Message)]
989pub struct ViewToArrowResp {
990    #[prost(bytes = "vec", tag = "1")]
991    #[serde(skip)]
992    pub arrow: ::prost::alloc::vec::Vec<u8>,
993}
994#[derive(serde::Serialize)]
995#[allow(clippy::derive_partial_eq_without_eq)]
996#[derive(Clone, PartialEq, ::prost::Message)]
997pub struct ViewColumnPathsReq {
998    #[prost(uint32, optional, tag = "1")]
999    pub start_col: ::core::option::Option<u32>,
1000    #[prost(uint32, optional, tag = "2")]
1001    pub end_col: ::core::option::Option<u32>,
1002}
1003/// One row of a column path area, `width` values long.
1004#[derive(serde::Serialize)]
1005#[allow(clippy::derive_partial_eq_without_eq)]
1006#[derive(Clone, PartialEq, ::prost::Message)]
1007pub struct ColumnPathLevel {
1008    #[prost(message, repeated, tag = "1")]
1009    pub values: ::prost::alloc::vec::Vec<Scalar>,
1010}
1011#[derive(serde::Serialize)]
1012#[allow(clippy::derive_partial_eq_without_eq)]
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct ViewColumnPathsResp {
1015    /// Transposed, `split_by.len() + 1` rows of `width` values each.
1016    #[prost(message, repeated, tag = "2")]
1017    pub area: ::prost::alloc::vec::Vec<ColumnPathLevel>,
1018}
1019#[derive(serde::Serialize)]
1020#[allow(clippy::derive_partial_eq_without_eq)]
1021#[derive(Clone, PartialEq, ::prost::Message)]
1022pub struct ViewDeleteReq {}
1023#[derive(serde::Serialize)]
1024#[allow(clippy::derive_partial_eq_without_eq)]
1025#[derive(Clone, PartialEq, ::prost::Message)]
1026pub struct ViewDeleteResp {}
1027#[derive(serde::Serialize)]
1028#[allow(clippy::derive_partial_eq_without_eq)]
1029#[derive(Clone, PartialEq, ::prost::Message)]
1030pub struct ViewGetMinMaxReq {
1031    #[prost(string, tag = "1")]
1032    pub column_name: ::prost::alloc::string::String,
1033}
1034#[derive(serde::Serialize)]
1035#[allow(clippy::derive_partial_eq_without_eq)]
1036#[derive(Clone, PartialEq, ::prost::Message)]
1037pub struct ViewGetMinMaxResp {
1038    #[prost(message, optional, tag = "1")]
1039    pub min: ::core::option::Option<Scalar>,
1040    #[prost(message, optional, tag = "2")]
1041    pub max: ::core::option::Option<Scalar>,
1042}
1043#[derive(serde::Serialize)]
1044#[allow(clippy::derive_partial_eq_without_eq)]
1045#[derive(Clone, PartialEq, ::prost::Message)]
1046pub struct ViewExpressionSchemaReq {}
1047#[derive(serde::Serialize)]
1048#[allow(clippy::derive_partial_eq_without_eq)]
1049#[derive(Clone, PartialEq, ::prost::Message)]
1050pub struct ViewExpressionSchemaResp {
1051    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
1052    pub schema: ::std::collections::HashMap<::prost::alloc::string::String, i32>,
1053}
1054#[derive(serde::Serialize)]
1055#[allow(clippy::derive_partial_eq_without_eq)]
1056#[derive(Clone, PartialEq, ::prost::Message)]
1057pub struct ViewToCsvReq {
1058    #[prost(message, optional, tag = "1")]
1059    pub viewport: ::core::option::Option<ViewPort>,
1060}
1061#[derive(serde::Serialize)]
1062#[allow(clippy::derive_partial_eq_without_eq)]
1063#[derive(Clone, PartialEq, ::prost::Message)]
1064pub struct ViewToCsvResp {
1065    #[prost(string, tag = "1")]
1066    pub csv: ::prost::alloc::string::String,
1067}
1068#[derive(serde::Serialize)]
1069#[allow(clippy::derive_partial_eq_without_eq)]
1070#[derive(Clone, PartialEq, ::prost::Message)]
1071pub struct ViewRemoveOnUpdateReq {
1072    #[prost(uint32, tag = "1")]
1073    pub id: u32,
1074}
1075#[derive(serde::Serialize)]
1076#[allow(clippy::derive_partial_eq_without_eq)]
1077#[derive(Clone, PartialEq, ::prost::Message)]
1078pub struct ViewRemoveOnUpdateResp {}
1079#[derive(serde::Serialize)]
1080#[allow(clippy::derive_partial_eq_without_eq)]
1081#[derive(Clone, PartialEq, ::prost::Message)]
1082pub struct ViewCollapseReq {
1083    #[prost(uint32, tag = "1")]
1084    pub row_index: u32,
1085}
1086#[derive(serde::Serialize)]
1087#[allow(clippy::derive_partial_eq_without_eq)]
1088#[derive(Clone, PartialEq, ::prost::Message)]
1089pub struct ViewCollapseResp {
1090    #[prost(uint32, tag = "1")]
1091    pub num_changed: u32,
1092}
1093#[derive(serde::Serialize)]
1094#[allow(clippy::derive_partial_eq_without_eq)]
1095#[derive(Clone, PartialEq, ::prost::Message)]
1096pub struct ViewExpandReq {
1097    #[prost(uint32, tag = "1")]
1098    pub row_index: u32,
1099}
1100#[derive(serde::Serialize)]
1101#[allow(clippy::derive_partial_eq_without_eq)]
1102#[derive(Clone, PartialEq, ::prost::Message)]
1103pub struct ViewExpandResp {
1104    #[prost(uint32, tag = "1")]
1105    pub num_changed: u32,
1106}
1107/// `View::set_depth`
1108#[derive(serde::Serialize)]
1109#[allow(clippy::derive_partial_eq_without_eq)]
1110#[derive(Clone, PartialEq, ::prost::Message)]
1111pub struct ViewSetDepthReq {
1112    #[prost(uint32, tag = "1")]
1113    pub depth: u32,
1114}
1115#[derive(serde::Serialize)]
1116#[allow(clippy::derive_partial_eq_without_eq)]
1117#[derive(Clone, PartialEq, ::prost::Message)]
1118pub struct ViewSetDepthResp {}
1119#[derive(serde::Serialize)]
1120#[allow(clippy::derive_partial_eq_without_eq)]
1121#[derive(Clone, PartialEq, ::prost::Message)]
1122pub struct ServerSystemInfoReq {}
1123#[derive(serde::Serialize)]
1124#[allow(clippy::derive_partial_eq_without_eq)]
1125#[derive(Clone, PartialEq, ::prost::Message)]
1126pub struct ServerSystemInfoResp {
1127    #[prost(uint64, tag = "1")]
1128    pub heap_size: u64,
1129    #[prost(uint64, tag = "2")]
1130    pub used_size: u64,
1131    #[prost(uint32, tag = "3")]
1132    pub cpu_time: u32,
1133    #[prost(uint32, tag = "4")]
1134    pub cpu_time_epoch: u32,
1135}
1136#[derive(serde::Serialize)]
1137#[allow(clippy::derive_partial_eq_without_eq)]
1138#[derive(Clone, PartialEq, ::prost::Message)]
1139pub struct WindowSpec {
1140    #[prost(string, tag = "2")]
1141    pub source: ::prost::alloc::string::String,
1142    /// The aggregate, in the data model's own vocabulary - see
1143    /// `GetFeaturesResp.WindowAggregateArgs`. A string rather than an enum so
1144    /// that a `View` can carry an op the built-in engine has never heard of,
1145    /// e.g. kdb+'s `mdev`.
1146    #[prost(string, tag = "3")]
1147    pub op: ::prost::alloc::string::String,
1148    #[prost(string, repeated, tag = "4")]
1149    pub partition_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1150    #[prost(message, optional, tag = "5")]
1151    pub order_by: ::core::option::Option<window_spec::Order>,
1152    #[prost(uint32, optional, tag = "9")]
1153    pub offset: ::core::option::Option<u32>,
1154    #[prost(double, optional, tag = "10")]
1155    pub alpha: ::core::option::Option<f64>,
1156    #[prost(oneof = "window_spec::Frame", tags = "6, 7, 8")]
1157    pub frame: ::core::option::Option<window_spec::Frame>,
1158}
1159/// Nested message and enum types in `WindowSpec`.
1160pub mod window_spec {
1161    #[derive(serde::Serialize)]
1162    #[allow(clippy::derive_partial_eq_without_eq)]
1163    #[derive(Clone, PartialEq, ::prost::Message)]
1164    pub struct Order {
1165        #[prost(string, tag = "1")]
1166        pub column: ::prost::alloc::string::String,
1167        #[prost(bool, tag = "2")]
1168        pub desc: bool,
1169    }
1170    #[derive(serde::Serialize)]
1171    #[allow(clippy::derive_partial_eq_without_eq)]
1172    #[derive(Clone, PartialEq, ::prost::Oneof)]
1173    pub enum Frame {
1174        #[prost(uint32, tag = "6")]
1175        Rows(u32),
1176        #[prost(double, tag = "7")]
1177        Range(f64),
1178        #[prost(enumeration = "::prost_types::NullValue", tag = "8")]
1179        Cumulative(i32),
1180    }
1181}
1182#[derive(serde::Serialize)]
1183#[allow(clippy::derive_partial_eq_without_eq)]
1184#[derive(Clone, PartialEq, ::prost::Message)]
1185pub struct ViewConfig {
1186    #[prost(string, repeated, tag = "1")]
1187    pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1188    #[prost(string, repeated, tag = "2")]
1189    pub split_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1190    #[prost(message, optional, tag = "3")]
1191    pub columns: ::core::option::Option<ColumnsUpdate>,
1192    #[prost(message, repeated, tag = "4")]
1193    pub filter: ::prost::alloc::vec::Vec<view_config::Filter>,
1194    #[prost(message, repeated, tag = "5")]
1195    pub sort: ::prost::alloc::vec::Vec<view_config::Sort>,
1196    #[prost(map = "string, string", tag = "6")]
1197    pub expressions: ::std::collections::HashMap<
1198        ::prost::alloc::string::String,
1199        ::prost::alloc::string::String,
1200    >,
1201    #[prost(map = "string, message", tag = "7")]
1202    pub aggregates: ::std::collections::HashMap<
1203        ::prost::alloc::string::String,
1204        view_config::AggList,
1205    >,
1206    #[prost(enumeration = "view_config::FilterReducer", tag = "8")]
1207    pub filter_op: i32,
1208    #[prost(uint32, optional, tag = "9")]
1209    pub group_by_depth: ::core::option::Option<u32>,
1210    #[prost(enumeration = "GroupRollupMode", optional, tag = "10")]
1211    pub group_rollup_mode: ::core::option::Option<i32>,
1212    #[prost(map = "string, message", tag = "11")]
1213    pub windows: ::std::collections::HashMap<::prost::alloc::string::String, WindowSpec>,
1214    #[prost(enumeration = "SplitRollupMode", optional, tag = "12")]
1215    pub split_rollup_mode: ::core::option::Option<i32>,
1216}
1217/// Nested message and enum types in `ViewConfig`.
1218pub mod view_config {
1219    #[derive(serde::Serialize)]
1220    #[allow(clippy::derive_partial_eq_without_eq)]
1221    #[derive(Clone, PartialEq, ::prost::Message)]
1222    pub struct AggList {
1223        #[prost(string, repeated, tag = "1")]
1224        pub aggregations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1225    }
1226    #[derive(serde::Serialize)]
1227    #[allow(clippy::derive_partial_eq_without_eq)]
1228    #[derive(Clone, PartialEq, ::prost::Message)]
1229    pub struct Sort {
1230        #[prost(string, tag = "1")]
1231        pub column: ::prost::alloc::string::String,
1232        #[prost(enumeration = "super::SortOp", tag = "2")]
1233        pub op: i32,
1234    }
1235    #[derive(serde::Serialize)]
1236    #[allow(clippy::derive_partial_eq_without_eq)]
1237    #[derive(Clone, PartialEq, ::prost::Message)]
1238    pub struct Filter {
1239        #[prost(string, tag = "1")]
1240        pub column: ::prost::alloc::string::String,
1241        #[prost(string, tag = "2")]
1242        pub op: ::prost::alloc::string::String,
1243        #[prost(message, repeated, tag = "3")]
1244        pub value: ::prost::alloc::vec::Vec<super::Scalar>,
1245    }
1246    #[derive(serde::Serialize)]
1247    #[derive(
1248        Clone,
1249        Copy,
1250        Debug,
1251        PartialEq,
1252        Eq,
1253        Hash,
1254        PartialOrd,
1255        Ord,
1256        ::prost::Enumeration
1257    )]
1258    #[repr(i32)]
1259    pub enum FilterReducer {
1260        And = 0,
1261        Or = 1,
1262    }
1263    impl FilterReducer {
1264        /// String value of the enum field names used in the ProtoBuf definition.
1265        ///
1266        /// The values are not transformed in any way and thus are considered stable
1267        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1268        pub fn as_str_name(&self) -> &'static str {
1269            match self {
1270                FilterReducer::And => "AND",
1271                FilterReducer::Or => "OR",
1272            }
1273        }
1274        /// Creates an enum from field names used in the ProtoBuf definition.
1275        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1276            match value {
1277                "AND" => Some(Self::And),
1278                "OR" => Some(Self::Or),
1279                _ => None,
1280            }
1281        }
1282    }
1283}
1284#[derive(serde::Serialize)]
1285#[allow(clippy::derive_partial_eq_without_eq)]
1286#[derive(Clone, PartialEq, ::prost::Message)]
1287pub struct ColumnsUpdate {
1288    #[prost(oneof = "columns_update::OptColumns", tags = "1, 2")]
1289    pub opt_columns: ::core::option::Option<columns_update::OptColumns>,
1290}
1291/// Nested message and enum types in `ColumnsUpdate`.
1292pub mod columns_update {
1293    #[derive(serde::Serialize)]
1294    #[allow(clippy::derive_partial_eq_without_eq)]
1295    #[derive(Clone, PartialEq, ::prost::Message)]
1296    pub struct Columns {
1297        #[prost(string, repeated, tag = "1")]
1298        pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1299    }
1300    #[derive(serde::Serialize)]
1301    #[allow(clippy::derive_partial_eq_without_eq)]
1302    #[derive(Clone, PartialEq, ::prost::Oneof)]
1303    pub enum OptColumns {
1304        #[prost(enumeration = "::prost_types::NullValue", tag = "1")]
1305        DefaultColumns(i32),
1306        #[prost(message, tag = "2")]
1307        Columns(Columns),
1308    }
1309}
1310#[derive(serde::Serialize)]
1311#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1312#[repr(i32)]
1313pub enum StatusCode {
1314    ServerError = 0,
1315    ViewNotFound = 1,
1316    TransportError = 2,
1317}
1318impl StatusCode {
1319    /// String value of the enum field names used in the ProtoBuf definition.
1320    ///
1321    /// The values are not transformed in any way and thus are considered stable
1322    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1323    pub fn as_str_name(&self) -> &'static str {
1324        match self {
1325            StatusCode::ServerError => "SERVER_ERROR",
1326            StatusCode::ViewNotFound => "VIEW_NOT_FOUND",
1327            StatusCode::TransportError => "TRANSPORT_ERROR",
1328        }
1329    }
1330    /// Creates an enum from field names used in the ProtoBuf definition.
1331    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1332        match value {
1333            "SERVER_ERROR" => Some(Self::ServerError),
1334            "VIEW_NOT_FOUND" => Some(Self::ViewNotFound),
1335            "TRANSPORT_ERROR" => Some(Self::TransportError),
1336            _ => None,
1337        }
1338    }
1339}
1340/// View types
1341#[derive(ts_rs::TS)]
1342#[derive(serde::Serialize)]
1343#[derive(serde::Deserialize)]
1344#[serde(rename_all = "snake_case")]
1345#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1346#[repr(i32)]
1347pub enum ColumnType {
1348    String = 0,
1349    Date = 1,
1350    Datetime = 2,
1351    Integer = 3,
1352    Float = 4,
1353    Boolean = 5,
1354}
1355impl ColumnType {
1356    /// String value of the enum field names used in the ProtoBuf definition.
1357    ///
1358    /// The values are not transformed in any way and thus are considered stable
1359    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1360    pub fn as_str_name(&self) -> &'static str {
1361        match self {
1362            ColumnType::String => "STRING",
1363            ColumnType::Date => "DATE",
1364            ColumnType::Datetime => "DATETIME",
1365            ColumnType::Integer => "INTEGER",
1366            ColumnType::Float => "FLOAT",
1367            ColumnType::Boolean => "BOOLEAN",
1368        }
1369    }
1370    /// Creates an enum from field names used in the ProtoBuf definition.
1371    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1372        match value {
1373            "STRING" => Some(Self::String),
1374            "DATE" => Some(Self::Date),
1375            "DATETIME" => Some(Self::Datetime),
1376            "INTEGER" => Some(Self::Integer),
1377            "FLOAT" => Some(Self::Float),
1378            "BOOLEAN" => Some(Self::Boolean),
1379            _ => None,
1380        }
1381    }
1382}
1383/// TODO This belongs in features
1384#[derive(serde::Serialize)]
1385#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1386#[repr(i32)]
1387pub enum SortOp {
1388    SortNone = 0,
1389    SortAsc = 1,
1390    SortDesc = 2,
1391    SortColAsc = 3,
1392    SortColDesc = 4,
1393    SortAscAbs = 5,
1394    SortDescAbs = 6,
1395    SortColAscAbs = 7,
1396    SortColDescAbs = 8,
1397}
1398impl SortOp {
1399    /// String value of the enum field names used in the ProtoBuf definition.
1400    ///
1401    /// The values are not transformed in any way and thus are considered stable
1402    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1403    pub fn as_str_name(&self) -> &'static str {
1404        match self {
1405            SortOp::SortNone => "SORT_NONE",
1406            SortOp::SortAsc => "SORT_ASC",
1407            SortOp::SortDesc => "SORT_DESC",
1408            SortOp::SortColAsc => "SORT_COL_ASC",
1409            SortOp::SortColDesc => "SORT_COL_DESC",
1410            SortOp::SortAscAbs => "SORT_ASC_ABS",
1411            SortOp::SortDescAbs => "SORT_DESC_ABS",
1412            SortOp::SortColAscAbs => "SORT_COL_ASC_ABS",
1413            SortOp::SortColDescAbs => "SORT_COL_DESC_ABS",
1414        }
1415    }
1416    /// Creates an enum from field names used in the ProtoBuf definition.
1417    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1418        match value {
1419            "SORT_NONE" => Some(Self::SortNone),
1420            "SORT_ASC" => Some(Self::SortAsc),
1421            "SORT_DESC" => Some(Self::SortDesc),
1422            "SORT_COL_ASC" => Some(Self::SortColAsc),
1423            "SORT_COL_DESC" => Some(Self::SortColDesc),
1424            "SORT_ASC_ABS" => Some(Self::SortAscAbs),
1425            "SORT_DESC_ABS" => Some(Self::SortDescAbs),
1426            "SORT_COL_ASC_ABS" => Some(Self::SortColAscAbs),
1427            "SORT_COL_DESC_ABS" => Some(Self::SortColDescAbs),
1428            _ => None,
1429        }
1430    }
1431}
1432#[derive(serde::Serialize)]
1433#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1434#[repr(i32)]
1435pub enum GroupRollupMode {
1436    Rollup = 0,
1437    Flat = 1,
1438    Total = 2,
1439}
1440impl GroupRollupMode {
1441    /// String value of the enum field names used in the ProtoBuf definition.
1442    ///
1443    /// The values are not transformed in any way and thus are considered stable
1444    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1445    pub fn as_str_name(&self) -> &'static str {
1446        match self {
1447            GroupRollupMode::Rollup => "ROLLUP",
1448            GroupRollupMode::Flat => "FLAT",
1449            GroupRollupMode::Total => "TOTAL",
1450        }
1451    }
1452    /// Creates an enum from field names used in the ProtoBuf definition.
1453    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1454        match value {
1455            "ROLLUP" => Some(Self::Rollup),
1456            "FLAT" => Some(Self::Flat),
1457            "TOTAL" => Some(Self::Total),
1458            _ => None,
1459        }
1460    }
1461}
1462/// The `split_by` corollary to `GroupRollupMode`. `FLAT` (the wire default)
1463/// is the historical behavior - only full-depth split combinations are
1464/// emitted as columns. `ROLLUP` additionally emits grand-total and subtotal
1465/// column groups in pre-order ("totals before"). Enum value names are
1466/// prefixed because proto enum values share their parent scope with
1467/// `GroupRollupMode`'s.
1468#[derive(serde::Serialize)]
1469#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1470#[repr(i32)]
1471pub enum SplitRollupMode {
1472    Flat = 0,
1473    Rollup = 1,
1474}
1475impl SplitRollupMode {
1476    /// String value of the enum field names used in the ProtoBuf definition.
1477    ///
1478    /// The values are not transformed in any way and thus are considered stable
1479    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1480    pub fn as_str_name(&self) -> &'static str {
1481        match self {
1482            SplitRollupMode::Flat => "SPLIT_ROLLUP_MODE_FLAT",
1483            SplitRollupMode::Rollup => "SPLIT_ROLLUP_MODE_ROLLUP",
1484        }
1485    }
1486    /// Creates an enum from field names used in the ProtoBuf definition.
1487    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1488        match value {
1489            "SPLIT_ROLLUP_MODE_FLAT" => Some(Self::Flat),
1490            "SPLIT_ROLLUP_MODE_ROLLUP" => Some(Self::Rollup),
1491            _ => None,
1492        }
1493    }
1494}
1495#[derive(serde::Deserialize, ts_rs::TS)]
1496#[serde(rename_all = "snake_case")]
1497#[derive(serde::Serialize)]
1498#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1499#[repr(i32)]
1500pub enum ListFlatten {
1501    Zip = 0,
1502    Cartesian = 1,
1503    Stringify = 2,
1504    StringifyFormatted = 3,
1505}
1506impl ListFlatten {
1507    /// String value of the enum field names used in the ProtoBuf definition.
1508    ///
1509    /// The values are not transformed in any way and thus are considered stable
1510    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1511    pub fn as_str_name(&self) -> &'static str {
1512        match self {
1513            ListFlatten::Zip => "LIST_FLATTEN_ZIP",
1514            ListFlatten::Cartesian => "LIST_FLATTEN_CARTESIAN",
1515            ListFlatten::Stringify => "LIST_FLATTEN_STRINGIFY",
1516            ListFlatten::StringifyFormatted => "LIST_FLATTEN_STRINGIFY_FORMATTED",
1517        }
1518    }
1519    /// Creates an enum from field names used in the ProtoBuf definition.
1520    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1521        match value {
1522            "LIST_FLATTEN_ZIP" => Some(Self::Zip),
1523            "LIST_FLATTEN_CARTESIAN" => Some(Self::Cartesian),
1524            "LIST_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1525            "LIST_FLATTEN_STRINGIFY_FORMATTED" => Some(Self::StringifyFormatted),
1526            _ => None,
1527        }
1528    }
1529}
1530#[derive(serde::Deserialize, ts_rs::TS)]
1531#[serde(rename_all = "snake_case")]
1532#[derive(serde::Serialize)]
1533#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1534#[repr(i32)]
1535pub enum StructFlatten {
1536    Pivot = 0,
1537    Stringify = 1,
1538    StringifyFormatted = 2,
1539}
1540impl StructFlatten {
1541    /// String value of the enum field names used in the ProtoBuf definition.
1542    ///
1543    /// The values are not transformed in any way and thus are considered stable
1544    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1545    pub fn as_str_name(&self) -> &'static str {
1546        match self {
1547            StructFlatten::Pivot => "STRUCT_FLATTEN_PIVOT",
1548            StructFlatten::Stringify => "STRUCT_FLATTEN_STRINGIFY",
1549            StructFlatten::StringifyFormatted => "STRUCT_FLATTEN_STRINGIFY_FORMATTED",
1550        }
1551    }
1552    /// Creates an enum from field names used in the ProtoBuf definition.
1553    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1554        match value {
1555            "STRUCT_FLATTEN_PIVOT" => Some(Self::Pivot),
1556            "STRUCT_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1557            "STRUCT_FLATTEN_STRINGIFY_FORMATTED" => Some(Self::StringifyFormatted),
1558            _ => None,
1559        }
1560    }
1561}
1562#[derive(serde::Deserialize, ts_rs::TS)]
1563#[serde(rename_all = "snake_case")]
1564#[derive(serde::Serialize)]
1565#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1566#[repr(i32)]
1567pub enum MapFlatten {
1568    Pivot = 0,
1569    Stringify = 1,
1570    StringifyFormatted = 2,
1571}
1572impl MapFlatten {
1573    /// String value of the enum field names used in the ProtoBuf definition.
1574    ///
1575    /// The values are not transformed in any way and thus are considered stable
1576    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1577    pub fn as_str_name(&self) -> &'static str {
1578        match self {
1579            MapFlatten::Pivot => "MAP_FLATTEN_PIVOT",
1580            MapFlatten::Stringify => "MAP_FLATTEN_STRINGIFY",
1581            MapFlatten::StringifyFormatted => "MAP_FLATTEN_STRINGIFY_FORMATTED",
1582        }
1583    }
1584    /// Creates an enum from field names used in the ProtoBuf definition.
1585    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1586        match value {
1587            "MAP_FLATTEN_PIVOT" => Some(Self::Pivot),
1588            "MAP_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1589            "MAP_FLATTEN_STRINGIFY_FORMATTED" => Some(Self::StringifyFormatted),
1590            _ => None,
1591        }
1592    }
1593}
1594#[derive(serde::Deserialize, ts_rs::TS)]
1595#[serde(rename_all = "snake_case")]
1596#[derive(serde::Serialize)]
1597#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1598#[repr(i32)]
1599pub enum JoinType {
1600    Inner = 0,
1601    Left = 1,
1602    Outer = 2,
1603}
1604impl JoinType {
1605    /// String value of the enum field names used in the ProtoBuf definition.
1606    ///
1607    /// The values are not transformed in any way and thus are considered stable
1608    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1609    pub fn as_str_name(&self) -> &'static str {
1610        match self {
1611            JoinType::Inner => "INNER",
1612            JoinType::Left => "LEFT",
1613            JoinType::Outer => "OUTER",
1614        }
1615    }
1616    /// Creates an enum from field names used in the ProtoBuf definition.
1617    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1618        match value {
1619            "INNER" => Some(Self::Inner),
1620            "LEFT" => Some(Self::Left),
1621            "OUTER" => Some(Self::Outer),
1622            _ => None,
1623        }
1624    }
1625}