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 emit_legacy_row_path_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, 9, 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 = "9")]
149        TableValidateExprReq(super::TableValidateExprReq),
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, 9, 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 = "9")]
250        TableValidateExprResp(super::TableValidateExprResp),
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}
357/// Nested message and enum types in `GetFeaturesResp`.
358pub mod get_features_resp {
359    #[derive(serde::Serialize)]
360    #[allow(clippy::derive_partial_eq_without_eq)]
361    #[derive(Clone, PartialEq, ::prost::Message)]
362    pub struct WindowAggregateOptions {
363        #[prost(message, repeated, tag = "1")]
364        pub options: ::prost::alloc::vec::Vec<super::WindowAggregateArgs>,
365    }
366    #[derive(serde::Serialize)]
367    #[allow(clippy::derive_partial_eq_without_eq)]
368    #[derive(Clone, PartialEq, ::prost::Message)]
369    pub struct ColumnTypeOptions {
370        #[prost(string, repeated, tag = "1")]
371        pub options: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
372    }
373    #[derive(serde::Serialize)]
374    #[allow(clippy::derive_partial_eq_without_eq)]
375    #[derive(Clone, PartialEq, ::prost::Message)]
376    pub struct AggregateOptions {
377        #[prost(message, repeated, tag = "1")]
378        pub aggregates: ::prost::alloc::vec::Vec<AggregateArgs>,
379    }
380    #[derive(serde::Serialize)]
381    #[allow(clippy::derive_partial_eq_without_eq)]
382    #[derive(Clone, PartialEq, ::prost::Message)]
383    pub struct AggregateArgs {
384        #[prost(string, tag = "1")]
385        pub name: ::prost::alloc::string::String,
386        #[prost(enumeration = "super::ColumnType", repeated, tag = "2")]
387        pub args: ::prost::alloc::vec::Vec<i32>,
388    }
389}
390#[derive(serde::Serialize)]
391#[allow(clippy::derive_partial_eq_without_eq)]
392#[derive(Clone, PartialEq, ::prost::Message)]
393pub struct WindowAggregateArgs {
394    #[prost(string, tag = "1")]
395    pub name: ::prost::alloc::string::String,
396    #[prost(string, repeated, tag = "2")]
397    pub frames: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
398    #[prost(bool, tag = "3")]
399    pub offset: bool,
400    #[prost(bool, tag = "4")]
401    pub alpha: bool,
402    #[prost(enumeration = "ColumnType", optional, tag = "5")]
403    pub result_type: ::core::option::Option<i32>,
404}
405/// `Client::get_hosted_tables`
406#[derive(serde::Serialize)]
407#[allow(clippy::derive_partial_eq_without_eq)]
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct GetHostedTablesReq {
410    #[prost(bool, tag = "1")]
411    pub subscribe: bool,
412}
413#[derive(serde::Serialize)]
414#[allow(clippy::derive_partial_eq_without_eq)]
415#[derive(Clone, PartialEq, ::prost::Message)]
416pub struct GetHostedTablesResp {
417    #[prost(message, repeated, tag = "1")]
418    pub table_infos: ::prost::alloc::vec::Vec<HostedTable>,
419}
420#[derive(serde::Serialize)]
421#[allow(clippy::derive_partial_eq_without_eq)]
422#[derive(Clone, PartialEq, ::prost::Message)]
423pub struct HostedTable {
424    #[prost(string, tag = "1")]
425    pub entity_id: ::prost::alloc::string::String,
426    #[prost(string, optional, tag = "2")]
427    pub index: ::core::option::Option<::prost::alloc::string::String>,
428    #[prost(uint32, optional, tag = "3")]
429    pub limit: ::core::option::Option<u32>,
430}
431#[derive(serde::Serialize)]
432#[allow(clippy::derive_partial_eq_without_eq)]
433#[derive(Clone, PartialEq, ::prost::Message)]
434pub struct RemoveHostedTablesUpdateReq {
435    #[prost(uint32, tag = "1")]
436    pub id: u32,
437}
438#[derive(serde::Serialize)]
439#[allow(clippy::derive_partial_eq_without_eq)]
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct RemoveHostedTablesUpdateResp {}
442/// `Table::size`
443#[derive(serde::Serialize)]
444#[allow(clippy::derive_partial_eq_without_eq)]
445#[derive(Clone, PartialEq, ::prost::Message)]
446pub struct TableSizeReq {}
447#[derive(serde::Serialize)]
448#[allow(clippy::derive_partial_eq_without_eq)]
449#[derive(Clone, PartialEq, ::prost::Message)]
450pub struct TableSizeResp {
451    #[prost(uint32, tag = "2")]
452    pub size: u32,
453}
454/// `Table::schema`
455#[derive(serde::Serialize)]
456#[allow(clippy::derive_partial_eq_without_eq)]
457#[derive(Clone, PartialEq, ::prost::Message)]
458pub struct TableSchemaReq {}
459#[derive(serde::Serialize)]
460#[allow(clippy::derive_partial_eq_without_eq)]
461#[derive(Clone, PartialEq, ::prost::Message)]
462pub struct TableSchemaResp {
463    #[prost(message, optional, tag = "1")]
464    pub schema: ::core::option::Option<Schema>,
465}
466/// `Table::validate_expressions`
467/// TODO: This should be just `validate()`
468#[derive(serde::Serialize)]
469#[allow(clippy::derive_partial_eq_without_eq)]
470#[derive(Clone, PartialEq, ::prost::Message)]
471pub struct TableValidateExprReq {
472    #[prost(map = "string, string", tag = "1")]
473    pub column_to_expr: ::std::collections::HashMap<
474        ::prost::alloc::string::String,
475        ::prost::alloc::string::String,
476    >,
477}
478#[derive(serde::Serialize)]
479#[derive(serde::Deserialize)]
480#[allow(clippy::derive_partial_eq_without_eq)]
481#[derive(Clone, PartialEq, ::prost::Message)]
482pub struct TableValidateExprResp {
483    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
484    pub expression_schema: ::std::collections::HashMap<
485        ::prost::alloc::string::String,
486        i32,
487    >,
488    #[prost(map = "string, message", tag = "2")]
489    pub errors: ::std::collections::HashMap<
490        ::prost::alloc::string::String,
491        table_validate_expr_resp::ExprValidationError,
492    >,
493    #[prost(map = "string, string", tag = "3")]
494    pub expression_alias: ::std::collections::HashMap<
495        ::prost::alloc::string::String,
496        ::prost::alloc::string::String,
497    >,
498}
499/// Nested message and enum types in `TableValidateExprResp`.
500pub mod table_validate_expr_resp {
501    #[derive(serde::Serialize)]
502    #[derive(serde::Deserialize)]
503    #[allow(clippy::derive_partial_eq_without_eq)]
504    #[derive(Clone, PartialEq, ::prost::Message)]
505    pub struct ExprValidationError {
506        #[prost(string, tag = "1")]
507        pub error_message: ::prost::alloc::string::String,
508        #[prost(uint32, tag = "2")]
509        pub line: u32,
510        #[prost(uint32, tag = "3")]
511        pub column: u32,
512    }
513}
514/// `Table::view`
515#[derive(serde::Serialize)]
516#[allow(clippy::derive_partial_eq_without_eq)]
517#[derive(Clone, PartialEq, ::prost::Message)]
518pub struct TableMakeViewReq {
519    #[prost(string, tag = "1")]
520    pub view_id: ::prost::alloc::string::String,
521    #[prost(message, optional, tag = "2")]
522    pub config: ::core::option::Option<ViewConfig>,
523}
524#[derive(serde::Serialize)]
525#[allow(clippy::derive_partial_eq_without_eq)]
526#[derive(Clone, PartialEq, ::prost::Message)]
527pub struct TableMakeViewResp {
528    #[prost(string, tag = "1")]
529    pub view_id: ::prost::alloc::string::String,
530}
531/// `View::schema`
532#[derive(serde::Serialize)]
533#[allow(clippy::derive_partial_eq_without_eq)]
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct ViewSchemaReq {}
536#[derive(serde::Serialize)]
537#[allow(clippy::derive_partial_eq_without_eq)]
538#[derive(Clone, PartialEq, ::prost::Message)]
539pub struct ViewSchemaResp {
540    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
541    pub schema: ::std::collections::HashMap<::prost::alloc::string::String, i32>,
542}
543/// `View::dimensions`
544#[derive(serde::Serialize)]
545#[allow(clippy::derive_partial_eq_without_eq)]
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct ViewDimensionsReq {}
548#[derive(serde::Serialize)]
549#[derive(serde::Deserialize)]
550#[allow(clippy::derive_partial_eq_without_eq)]
551#[derive(Clone, PartialEq, ::prost::Message)]
552pub struct ViewDimensionsResp {
553    #[prost(uint32, tag = "1")]
554    pub num_table_rows: u32,
555    #[prost(uint32, tag = "2")]
556    pub num_table_columns: u32,
557    #[prost(uint32, tag = "3")]
558    pub num_view_rows: u32,
559    #[prost(uint32, tag = "4")]
560    pub num_view_columns: u32,
561}
562/// `View::get_config`
563#[derive(serde::Serialize)]
564#[allow(clippy::derive_partial_eq_without_eq)]
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct ViewGetConfigReq {}
567#[derive(serde::Serialize)]
568#[allow(clippy::derive_partial_eq_without_eq)]
569#[derive(Clone, PartialEq, ::prost::Message)]
570pub struct ViewGetConfigResp {
571    #[prost(message, optional, tag = "1")]
572    pub config: ::core::option::Option<ViewConfig>,
573}
574/// `Client::table`.
575#[derive(serde::Serialize)]
576#[allow(clippy::derive_partial_eq_without_eq)]
577#[derive(Clone, PartialEq, ::prost::Message)]
578pub struct MakeTableReq {
579    #[prost(message, optional, tag = "1")]
580    pub data: ::core::option::Option<MakeTableData>,
581    #[prost(message, optional, tag = "2")]
582    pub options: ::core::option::Option<make_table_req::MakeTableOptions>,
583}
584/// Nested message and enum types in `MakeTableReq`.
585pub mod make_table_req {
586    #[derive(serde::Serialize)]
587    #[allow(clippy::derive_partial_eq_without_eq)]
588    #[derive(Clone, PartialEq, ::prost::Message)]
589    pub struct MakeTableOptions {
590        /// Back this Table's canonical data with the on-disk storage backend
591        /// (memory-mapped file on native; OPFS on WASM) instead of memory.
592        /// Orthogonal to `make_table_type`, so it is a standalone field.
593        #[prost(bool, optional, tag = "3")]
594        pub page_to_disk: ::core::option::Option<bool>,
595        #[prost(enumeration = "super::ListFlatten", optional, tag = "4")]
596        pub list_flatten: ::core::option::Option<i32>,
597        #[prost(oneof = "make_table_options::MakeTableType", tags = "1, 2")]
598        pub make_table_type: ::core::option::Option<make_table_options::MakeTableType>,
599    }
600    /// Nested message and enum types in `MakeTableOptions`.
601    pub mod make_table_options {
602        #[derive(serde::Serialize)]
603        #[allow(clippy::derive_partial_eq_without_eq)]
604        #[derive(Clone, PartialEq, ::prost::Oneof)]
605        pub enum MakeTableType {
606            #[prost(string, tag = "1")]
607            MakeIndexTable(::prost::alloc::string::String),
608            #[prost(uint32, tag = "2")]
609            MakeLimitTable(u32),
610        }
611    }
612}
613#[derive(serde::Serialize)]
614#[allow(clippy::derive_partial_eq_without_eq)]
615#[derive(Clone, PartialEq, ::prost::Message)]
616pub struct MakeTableResp {}
617/// `Client::join` — create a read-only table from a JOIN of two tables.
618#[derive(serde::Serialize)]
619#[allow(clippy::derive_partial_eq_without_eq)]
620#[derive(Clone, PartialEq, ::prost::Message)]
621pub struct MakeJoinTableReq {
622    #[prost(string, tag = "1")]
623    pub left_table_id: ::prost::alloc::string::String,
624    #[prost(string, tag = "2")]
625    pub right_table_id: ::prost::alloc::string::String,
626    #[prost(string, tag = "3")]
627    pub on_column: ::prost::alloc::string::String,
628    #[prost(enumeration = "JoinType", tag = "4")]
629    pub join_type: i32,
630    #[prost(string, tag = "5")]
631    pub right_on_column: ::prost::alloc::string::String,
632}
633#[derive(serde::Serialize)]
634#[allow(clippy::derive_partial_eq_without_eq)]
635#[derive(Clone, PartialEq, ::prost::Message)]
636pub struct MakeJoinTableResp {}
637/// `Table::delete`
638#[derive(serde::Serialize)]
639#[allow(clippy::derive_partial_eq_without_eq)]
640#[derive(Clone, PartialEq, ::prost::Message)]
641pub struct TableDeleteReq {
642    #[prost(bool, tag = "1")]
643    pub is_immediate: bool,
644}
645#[derive(serde::Serialize)]
646#[allow(clippy::derive_partial_eq_without_eq)]
647#[derive(Clone, PartialEq, ::prost::Message)]
648pub struct TableDeleteResp {}
649/// `Table::on_delete`
650#[derive(serde::Serialize)]
651#[allow(clippy::derive_partial_eq_without_eq)]
652#[derive(Clone, PartialEq, ::prost::Message)]
653pub struct TableOnDeleteReq {}
654#[derive(serde::Serialize)]
655#[allow(clippy::derive_partial_eq_without_eq)]
656#[derive(Clone, PartialEq, ::prost::Message)]
657pub struct TableOnDeleteResp {}
658/// `Table::make_port`
659#[derive(serde::Serialize)]
660#[allow(clippy::derive_partial_eq_without_eq)]
661#[derive(Clone, PartialEq, ::prost::Message)]
662pub struct TableMakePortReq {}
663#[derive(serde::Serialize)]
664#[allow(clippy::derive_partial_eq_without_eq)]
665#[derive(Clone, PartialEq, ::prost::Message)]
666pub struct TableMakePortResp {
667    #[prost(uint32, tag = "1")]
668    pub port_id: u32,
669}
670/// `Table::remove_delete`
671#[derive(serde::Serialize)]
672#[allow(clippy::derive_partial_eq_without_eq)]
673#[derive(Clone, PartialEq, ::prost::Message)]
674pub struct TableRemoveDeleteReq {
675    #[prost(uint32, tag = "1")]
676    pub id: u32,
677}
678#[derive(serde::Serialize)]
679#[allow(clippy::derive_partial_eq_without_eq)]
680#[derive(Clone, PartialEq, ::prost::Message)]
681pub struct TableRemoveDeleteResp {}
682/// `View::on_remove`
683#[derive(serde::Serialize)]
684#[allow(clippy::derive_partial_eq_without_eq)]
685#[derive(Clone, PartialEq, ::prost::Message)]
686pub struct ViewOnRemoveReq {}
687#[derive(ts_rs::TS)]
688#[derive(serde::Serialize)]
689#[allow(clippy::derive_partial_eq_without_eq)]
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct ViewOnRemoveResp {
692    #[prost(bytes = "vec", optional, tag = "1")]
693    #[ts(type = "Uint8Array")]
694    #[serde(with = "serde_bytes")]
695    pub indices: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
696    #[prost(uint32, tag = "2")]
697    pub port_id: u32,
698}
699/// `View::remove_remove`
700#[derive(serde::Serialize)]
701#[allow(clippy::derive_partial_eq_without_eq)]
702#[derive(Clone, PartialEq, ::prost::Message)]
703pub struct ViewRemoveOnRemoveReq {
704    #[prost(uint32, tag = "1")]
705    pub id: u32,
706}
707#[derive(serde::Serialize)]
708#[allow(clippy::derive_partial_eq_without_eq)]
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct ViewRemoveOnRemoveResp {}
711/// `Table::update`
712#[derive(serde::Serialize)]
713#[allow(clippy::derive_partial_eq_without_eq)]
714#[derive(Clone, PartialEq, ::prost::Message)]
715pub struct TableUpdateReq {
716    #[prost(message, optional, tag = "1")]
717    pub data: ::core::option::Option<MakeTableData>,
718    #[prost(uint32, tag = "2")]
719    pub port_id: u32,
720}
721#[derive(serde::Serialize)]
722#[allow(clippy::derive_partial_eq_without_eq)]
723#[derive(Clone, PartialEq, ::prost::Message)]
724pub struct TableUpdateResp {}
725/// `Table::replace`
726#[derive(serde::Serialize)]
727#[allow(clippy::derive_partial_eq_without_eq)]
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct TableReplaceReq {
730    #[prost(message, optional, tag = "1")]
731    pub data: ::core::option::Option<MakeTableData>,
732}
733#[derive(serde::Serialize)]
734#[allow(clippy::derive_partial_eq_without_eq)]
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct TableReplaceResp {}
737/// `Table::remove`
738#[derive(serde::Serialize)]
739#[allow(clippy::derive_partial_eq_without_eq)]
740#[derive(Clone, PartialEq, ::prost::Message)]
741pub struct TableRemoveReq {
742    #[prost(message, optional, tag = "1")]
743    pub data: ::core::option::Option<MakeTableData>,
744}
745#[derive(serde::Serialize)]
746#[allow(clippy::derive_partial_eq_without_eq)]
747#[derive(Clone, PartialEq, ::prost::Message)]
748pub struct TableRemoveResp {}
749#[derive(serde::Serialize)]
750#[allow(clippy::derive_partial_eq_without_eq)]
751#[derive(Clone, PartialEq, ::prost::Message)]
752pub struct ViewOnUpdateReq {
753    #[prost(enumeration = "view_on_update_req::Mode", optional, tag = "1")]
754    pub mode: ::core::option::Option<i32>,
755}
756/// Nested message and enum types in `ViewOnUpdateReq`.
757pub mod view_on_update_req {
758    #[derive(serde::Serialize)]
759    #[derive(
760        Clone,
761        Copy,
762        Debug,
763        PartialEq,
764        Eq,
765        Hash,
766        PartialOrd,
767        Ord,
768        ::prost::Enumeration
769    )]
770    #[repr(i32)]
771    pub enum Mode {
772        Row = 0,
773    }
774    impl Mode {
775        /// String value of the enum field names used in the ProtoBuf definition.
776        ///
777        /// The values are not transformed in any way and thus are considered stable
778        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
779        pub fn as_str_name(&self) -> &'static str {
780            match self {
781                Mode::Row => "ROW",
782            }
783        }
784        /// Creates an enum from field names used in the ProtoBuf definition.
785        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
786            match value {
787                "ROW" => Some(Self::Row),
788                _ => None,
789            }
790        }
791    }
792}
793#[derive(ts_rs::TS)]
794#[derive(serde::Serialize)]
795#[allow(clippy::derive_partial_eq_without_eq)]
796#[derive(Clone, PartialEq, ::prost::Message)]
797pub struct ViewOnUpdateResp {
798    #[prost(bytes = "vec", optional, tag = "1")]
799    #[ts(type = "Uint8Array | undefined")]
800    #[serde(with = "serde_bytes")]
801    pub delta: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
802    #[prost(uint32, tag = "2")]
803    pub port_id: u32,
804}
805#[derive(serde::Serialize)]
806#[allow(clippy::derive_partial_eq_without_eq)]
807#[derive(Clone, PartialEq, ::prost::Message)]
808pub struct ViewOnDeleteReq {}
809#[derive(serde::Serialize)]
810#[allow(clippy::derive_partial_eq_without_eq)]
811#[derive(Clone, PartialEq, ::prost::Message)]
812pub struct ViewOnDeleteResp {}
813#[derive(serde::Serialize)]
814#[allow(clippy::derive_partial_eq_without_eq)]
815#[derive(Clone, PartialEq, ::prost::Message)]
816pub struct ViewRemoveDeleteReq {
817    #[prost(uint32, tag = "1")]
818    pub id: u32,
819}
820#[derive(serde::Serialize)]
821#[allow(clippy::derive_partial_eq_without_eq)]
822#[derive(Clone, PartialEq, ::prost::Message)]
823pub struct ViewRemoveDeleteResp {}
824#[derive(serde::Serialize)]
825#[allow(clippy::derive_partial_eq_without_eq)]
826#[derive(Clone, PartialEq, ::prost::Message)]
827pub struct ViewToColumnsStringReq {
828    #[prost(message, optional, tag = "1")]
829    pub viewport: ::core::option::Option<ViewPort>,
830    #[prost(bool, optional, tag = "2")]
831    pub id: ::core::option::Option<bool>,
832    #[prost(bool, optional, tag = "3")]
833    pub index: ::core::option::Option<bool>,
834    #[prost(bool, optional, tag = "4")]
835    pub formatted: ::core::option::Option<bool>,
836}
837#[derive(serde::Serialize)]
838#[allow(clippy::derive_partial_eq_without_eq)]
839#[derive(Clone, PartialEq, ::prost::Message)]
840pub struct ViewToColumnsStringResp {
841    #[prost(string, tag = "1")]
842    pub json_string: ::prost::alloc::string::String,
843}
844#[derive(serde::Serialize)]
845#[allow(clippy::derive_partial_eq_without_eq)]
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct ViewToRowsStringReq {
848    #[prost(message, optional, tag = "1")]
849    pub viewport: ::core::option::Option<ViewPort>,
850    #[prost(bool, optional, tag = "2")]
851    pub id: ::core::option::Option<bool>,
852    #[prost(bool, optional, tag = "3")]
853    pub index: ::core::option::Option<bool>,
854    #[prost(bool, optional, tag = "4")]
855    pub formatted: ::core::option::Option<bool>,
856}
857#[derive(serde::Serialize)]
858#[allow(clippy::derive_partial_eq_without_eq)]
859#[derive(Clone, PartialEq, ::prost::Message)]
860pub struct ViewToRowsStringResp {
861    #[prost(string, tag = "1")]
862    pub json_string: ::prost::alloc::string::String,
863}
864#[derive(serde::Serialize)]
865#[allow(clippy::derive_partial_eq_without_eq)]
866#[derive(Clone, PartialEq, ::prost::Message)]
867pub struct ViewToNdjsonStringReq {
868    #[prost(message, optional, tag = "1")]
869    pub viewport: ::core::option::Option<ViewPort>,
870    #[prost(bool, optional, tag = "2")]
871    pub id: ::core::option::Option<bool>,
872    #[prost(bool, optional, tag = "3")]
873    pub index: ::core::option::Option<bool>,
874    #[prost(bool, optional, tag = "4")]
875    pub formatted: ::core::option::Option<bool>,
876}
877#[derive(serde::Serialize)]
878#[allow(clippy::derive_partial_eq_without_eq)]
879#[derive(Clone, PartialEq, ::prost::Message)]
880pub struct ViewToNdjsonStringResp {
881    #[prost(string, tag = "1")]
882    pub ndjson_string: ::prost::alloc::string::String,
883}
884#[derive(serde::Serialize)]
885#[allow(clippy::derive_partial_eq_without_eq)]
886#[derive(Clone, PartialEq, ::prost::Message)]
887pub struct ViewToArrowReq {
888    #[prost(message, optional, tag = "1")]
889    pub viewport: ::core::option::Option<ViewPort>,
890    #[prost(string, optional, tag = "2")]
891    pub compression: ::core::option::Option<::prost::alloc::string::String>,
892}
893#[derive(serde::Serialize)]
894#[allow(clippy::derive_partial_eq_without_eq)]
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct ViewToArrowResp {
897    #[prost(bytes = "vec", tag = "1")]
898    #[serde(skip)]
899    pub arrow: ::prost::alloc::vec::Vec<u8>,
900}
901#[derive(serde::Serialize)]
902#[allow(clippy::derive_partial_eq_without_eq)]
903#[derive(Clone, PartialEq, ::prost::Message)]
904pub struct ViewColumnPathsReq {
905    #[prost(uint32, optional, tag = "1")]
906    pub start_col: ::core::option::Option<u32>,
907    #[prost(uint32, optional, tag = "2")]
908    pub end_col: ::core::option::Option<u32>,
909}
910#[derive(serde::Serialize)]
911#[allow(clippy::derive_partial_eq_without_eq)]
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct ViewColumnPathsResp {
914    /// repeated ColumnPath paths = 1;
915    #[prost(string, repeated, tag = "1")]
916    pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
917}
918#[derive(serde::Serialize)]
919#[allow(clippy::derive_partial_eq_without_eq)]
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct ViewDeleteReq {}
922#[derive(serde::Serialize)]
923#[allow(clippy::derive_partial_eq_without_eq)]
924#[derive(Clone, PartialEq, ::prost::Message)]
925pub struct ViewDeleteResp {}
926#[derive(serde::Serialize)]
927#[allow(clippy::derive_partial_eq_without_eq)]
928#[derive(Clone, PartialEq, ::prost::Message)]
929pub struct ViewGetMinMaxReq {
930    #[prost(string, tag = "1")]
931    pub column_name: ::prost::alloc::string::String,
932}
933#[derive(serde::Serialize)]
934#[allow(clippy::derive_partial_eq_without_eq)]
935#[derive(Clone, PartialEq, ::prost::Message)]
936pub struct ViewGetMinMaxResp {
937    #[prost(message, optional, tag = "1")]
938    pub min: ::core::option::Option<Scalar>,
939    #[prost(message, optional, tag = "2")]
940    pub max: ::core::option::Option<Scalar>,
941}
942#[derive(serde::Serialize)]
943#[allow(clippy::derive_partial_eq_without_eq)]
944#[derive(Clone, PartialEq, ::prost::Message)]
945pub struct ViewExpressionSchemaReq {}
946#[derive(serde::Serialize)]
947#[allow(clippy::derive_partial_eq_without_eq)]
948#[derive(Clone, PartialEq, ::prost::Message)]
949pub struct ViewExpressionSchemaResp {
950    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
951    pub schema: ::std::collections::HashMap<::prost::alloc::string::String, i32>,
952}
953#[derive(serde::Serialize)]
954#[allow(clippy::derive_partial_eq_without_eq)]
955#[derive(Clone, PartialEq, ::prost::Message)]
956pub struct ViewToCsvReq {
957    #[prost(message, optional, tag = "1")]
958    pub viewport: ::core::option::Option<ViewPort>,
959}
960#[derive(serde::Serialize)]
961#[allow(clippy::derive_partial_eq_without_eq)]
962#[derive(Clone, PartialEq, ::prost::Message)]
963pub struct ViewToCsvResp {
964    #[prost(string, tag = "1")]
965    pub csv: ::prost::alloc::string::String,
966}
967#[derive(serde::Serialize)]
968#[allow(clippy::derive_partial_eq_without_eq)]
969#[derive(Clone, PartialEq, ::prost::Message)]
970pub struct ViewRemoveOnUpdateReq {
971    #[prost(uint32, tag = "1")]
972    pub id: u32,
973}
974#[derive(serde::Serialize)]
975#[allow(clippy::derive_partial_eq_without_eq)]
976#[derive(Clone, PartialEq, ::prost::Message)]
977pub struct ViewRemoveOnUpdateResp {}
978#[derive(serde::Serialize)]
979#[allow(clippy::derive_partial_eq_without_eq)]
980#[derive(Clone, PartialEq, ::prost::Message)]
981pub struct ViewCollapseReq {
982    #[prost(uint32, tag = "1")]
983    pub row_index: u32,
984}
985#[derive(serde::Serialize)]
986#[allow(clippy::derive_partial_eq_without_eq)]
987#[derive(Clone, PartialEq, ::prost::Message)]
988pub struct ViewCollapseResp {
989    #[prost(uint32, tag = "1")]
990    pub num_changed: u32,
991}
992#[derive(serde::Serialize)]
993#[allow(clippy::derive_partial_eq_without_eq)]
994#[derive(Clone, PartialEq, ::prost::Message)]
995pub struct ViewExpandReq {
996    #[prost(uint32, tag = "1")]
997    pub row_index: u32,
998}
999#[derive(serde::Serialize)]
1000#[allow(clippy::derive_partial_eq_without_eq)]
1001#[derive(Clone, PartialEq, ::prost::Message)]
1002pub struct ViewExpandResp {
1003    #[prost(uint32, tag = "1")]
1004    pub num_changed: u32,
1005}
1006/// `View::set_depth`
1007#[derive(serde::Serialize)]
1008#[allow(clippy::derive_partial_eq_without_eq)]
1009#[derive(Clone, PartialEq, ::prost::Message)]
1010pub struct ViewSetDepthReq {
1011    #[prost(uint32, tag = "1")]
1012    pub depth: u32,
1013}
1014#[derive(serde::Serialize)]
1015#[allow(clippy::derive_partial_eq_without_eq)]
1016#[derive(Clone, PartialEq, ::prost::Message)]
1017pub struct ViewSetDepthResp {}
1018#[derive(serde::Serialize)]
1019#[allow(clippy::derive_partial_eq_without_eq)]
1020#[derive(Clone, PartialEq, ::prost::Message)]
1021pub struct ServerSystemInfoReq {}
1022#[derive(serde::Serialize)]
1023#[allow(clippy::derive_partial_eq_without_eq)]
1024#[derive(Clone, PartialEq, ::prost::Message)]
1025pub struct ServerSystemInfoResp {
1026    #[prost(uint64, tag = "1")]
1027    pub heap_size: u64,
1028    #[prost(uint64, tag = "2")]
1029    pub used_size: u64,
1030    #[prost(uint32, tag = "3")]
1031    pub cpu_time: u32,
1032    #[prost(uint32, tag = "4")]
1033    pub cpu_time_epoch: u32,
1034}
1035#[derive(serde::Serialize)]
1036#[allow(clippy::derive_partial_eq_without_eq)]
1037#[derive(Clone, PartialEq, ::prost::Message)]
1038pub struct WindowSpec {
1039    #[prost(string, tag = "2")]
1040    pub source: ::prost::alloc::string::String,
1041    /// The aggregate, in the data model's own vocabulary - see
1042    /// `GetFeaturesResp.WindowAggregateArgs`. A string rather than an enum so
1043    /// that a `View` can carry an op the built-in engine has never heard of,
1044    /// e.g. kdb+'s `mdev`.
1045    #[prost(string, tag = "3")]
1046    pub op: ::prost::alloc::string::String,
1047    #[prost(string, repeated, tag = "4")]
1048    pub partition_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1049    #[prost(message, optional, tag = "5")]
1050    pub order_by: ::core::option::Option<window_spec::Order>,
1051    #[prost(uint32, optional, tag = "9")]
1052    pub offset: ::core::option::Option<u32>,
1053    #[prost(double, optional, tag = "10")]
1054    pub alpha: ::core::option::Option<f64>,
1055    #[prost(oneof = "window_spec::Frame", tags = "6, 7, 8")]
1056    pub frame: ::core::option::Option<window_spec::Frame>,
1057}
1058/// Nested message and enum types in `WindowSpec`.
1059pub mod window_spec {
1060    #[derive(serde::Serialize)]
1061    #[allow(clippy::derive_partial_eq_without_eq)]
1062    #[derive(Clone, PartialEq, ::prost::Message)]
1063    pub struct Order {
1064        #[prost(string, tag = "1")]
1065        pub column: ::prost::alloc::string::String,
1066        #[prost(bool, tag = "2")]
1067        pub desc: bool,
1068    }
1069    #[derive(serde::Serialize)]
1070    #[allow(clippy::derive_partial_eq_without_eq)]
1071    #[derive(Clone, PartialEq, ::prost::Oneof)]
1072    pub enum Frame {
1073        #[prost(uint32, tag = "6")]
1074        Rows(u32),
1075        #[prost(double, tag = "7")]
1076        Range(f64),
1077        #[prost(enumeration = "::prost_types::NullValue", tag = "8")]
1078        Cumulative(i32),
1079    }
1080}
1081#[derive(serde::Serialize)]
1082#[allow(clippy::derive_partial_eq_without_eq)]
1083#[derive(Clone, PartialEq, ::prost::Message)]
1084pub struct ViewConfig {
1085    #[prost(string, repeated, tag = "1")]
1086    pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1087    #[prost(string, repeated, tag = "2")]
1088    pub split_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1089    #[prost(message, optional, tag = "3")]
1090    pub columns: ::core::option::Option<ColumnsUpdate>,
1091    #[prost(message, repeated, tag = "4")]
1092    pub filter: ::prost::alloc::vec::Vec<view_config::Filter>,
1093    #[prost(message, repeated, tag = "5")]
1094    pub sort: ::prost::alloc::vec::Vec<view_config::Sort>,
1095    #[prost(map = "string, string", tag = "6")]
1096    pub expressions: ::std::collections::HashMap<
1097        ::prost::alloc::string::String,
1098        ::prost::alloc::string::String,
1099    >,
1100    #[prost(map = "string, message", tag = "7")]
1101    pub aggregates: ::std::collections::HashMap<
1102        ::prost::alloc::string::String,
1103        view_config::AggList,
1104    >,
1105    #[prost(enumeration = "view_config::FilterReducer", tag = "8")]
1106    pub filter_op: i32,
1107    #[prost(uint32, optional, tag = "9")]
1108    pub group_by_depth: ::core::option::Option<u32>,
1109    #[prost(enumeration = "GroupRollupMode", optional, tag = "10")]
1110    pub group_rollup_mode: ::core::option::Option<i32>,
1111    #[prost(map = "string, message", tag = "11")]
1112    pub windows: ::std::collections::HashMap<::prost::alloc::string::String, WindowSpec>,
1113    #[prost(enumeration = "SplitRollupMode", optional, tag = "12")]
1114    pub split_rollup_mode: ::core::option::Option<i32>,
1115}
1116/// Nested message and enum types in `ViewConfig`.
1117pub mod view_config {
1118    #[derive(serde::Serialize)]
1119    #[allow(clippy::derive_partial_eq_without_eq)]
1120    #[derive(Clone, PartialEq, ::prost::Message)]
1121    pub struct AggList {
1122        #[prost(string, repeated, tag = "1")]
1123        pub aggregations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1124    }
1125    #[derive(serde::Serialize)]
1126    #[allow(clippy::derive_partial_eq_without_eq)]
1127    #[derive(Clone, PartialEq, ::prost::Message)]
1128    pub struct Sort {
1129        #[prost(string, tag = "1")]
1130        pub column: ::prost::alloc::string::String,
1131        #[prost(enumeration = "super::SortOp", tag = "2")]
1132        pub op: i32,
1133    }
1134    #[derive(serde::Serialize)]
1135    #[allow(clippy::derive_partial_eq_without_eq)]
1136    #[derive(Clone, PartialEq, ::prost::Message)]
1137    pub struct Filter {
1138        #[prost(string, tag = "1")]
1139        pub column: ::prost::alloc::string::String,
1140        #[prost(string, tag = "2")]
1141        pub op: ::prost::alloc::string::String,
1142        #[prost(message, repeated, tag = "3")]
1143        pub value: ::prost::alloc::vec::Vec<super::Scalar>,
1144    }
1145    #[derive(serde::Serialize)]
1146    #[derive(
1147        Clone,
1148        Copy,
1149        Debug,
1150        PartialEq,
1151        Eq,
1152        Hash,
1153        PartialOrd,
1154        Ord,
1155        ::prost::Enumeration
1156    )]
1157    #[repr(i32)]
1158    pub enum FilterReducer {
1159        And = 0,
1160        Or = 1,
1161    }
1162    impl FilterReducer {
1163        /// String value of the enum field names used in the ProtoBuf definition.
1164        ///
1165        /// The values are not transformed in any way and thus are considered stable
1166        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1167        pub fn as_str_name(&self) -> &'static str {
1168            match self {
1169                FilterReducer::And => "AND",
1170                FilterReducer::Or => "OR",
1171            }
1172        }
1173        /// Creates an enum from field names used in the ProtoBuf definition.
1174        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1175            match value {
1176                "AND" => Some(Self::And),
1177                "OR" => Some(Self::Or),
1178                _ => None,
1179            }
1180        }
1181    }
1182}
1183#[derive(serde::Serialize)]
1184#[allow(clippy::derive_partial_eq_without_eq)]
1185#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct ColumnsUpdate {
1187    #[prost(oneof = "columns_update::OptColumns", tags = "1, 2")]
1188    pub opt_columns: ::core::option::Option<columns_update::OptColumns>,
1189}
1190/// Nested message and enum types in `ColumnsUpdate`.
1191pub mod columns_update {
1192    #[derive(serde::Serialize)]
1193    #[allow(clippy::derive_partial_eq_without_eq)]
1194    #[derive(Clone, PartialEq, ::prost::Message)]
1195    pub struct Columns {
1196        #[prost(string, repeated, tag = "1")]
1197        pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1198    }
1199    #[derive(serde::Serialize)]
1200    #[allow(clippy::derive_partial_eq_without_eq)]
1201    #[derive(Clone, PartialEq, ::prost::Oneof)]
1202    pub enum OptColumns {
1203        #[prost(enumeration = "::prost_types::NullValue", tag = "1")]
1204        DefaultColumns(i32),
1205        #[prost(message, tag = "2")]
1206        Columns(Columns),
1207    }
1208}
1209#[derive(serde::Serialize)]
1210#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1211#[repr(i32)]
1212pub enum StatusCode {
1213    ServerError = 0,
1214    ViewNotFound = 1,
1215    TransportError = 2,
1216}
1217impl StatusCode {
1218    /// String value of the enum field names used in the ProtoBuf definition.
1219    ///
1220    /// The values are not transformed in any way and thus are considered stable
1221    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1222    pub fn as_str_name(&self) -> &'static str {
1223        match self {
1224            StatusCode::ServerError => "SERVER_ERROR",
1225            StatusCode::ViewNotFound => "VIEW_NOT_FOUND",
1226            StatusCode::TransportError => "TRANSPORT_ERROR",
1227        }
1228    }
1229    /// Creates an enum from field names used in the ProtoBuf definition.
1230    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1231        match value {
1232            "SERVER_ERROR" => Some(Self::ServerError),
1233            "VIEW_NOT_FOUND" => Some(Self::ViewNotFound),
1234            "TRANSPORT_ERROR" => Some(Self::TransportError),
1235            _ => None,
1236        }
1237    }
1238}
1239/// View types
1240#[derive(ts_rs::TS)]
1241#[derive(serde::Serialize)]
1242#[derive(serde::Deserialize)]
1243#[serde(rename_all = "snake_case")]
1244#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1245#[repr(i32)]
1246pub enum ColumnType {
1247    String = 0,
1248    Date = 1,
1249    Datetime = 2,
1250    Integer = 3,
1251    Float = 4,
1252    Boolean = 5,
1253}
1254impl ColumnType {
1255    /// String value of the enum field names used in the ProtoBuf definition.
1256    ///
1257    /// The values are not transformed in any way and thus are considered stable
1258    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1259    pub fn as_str_name(&self) -> &'static str {
1260        match self {
1261            ColumnType::String => "STRING",
1262            ColumnType::Date => "DATE",
1263            ColumnType::Datetime => "DATETIME",
1264            ColumnType::Integer => "INTEGER",
1265            ColumnType::Float => "FLOAT",
1266            ColumnType::Boolean => "BOOLEAN",
1267        }
1268    }
1269    /// Creates an enum from field names used in the ProtoBuf definition.
1270    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1271        match value {
1272            "STRING" => Some(Self::String),
1273            "DATE" => Some(Self::Date),
1274            "DATETIME" => Some(Self::Datetime),
1275            "INTEGER" => Some(Self::Integer),
1276            "FLOAT" => Some(Self::Float),
1277            "BOOLEAN" => Some(Self::Boolean),
1278            _ => None,
1279        }
1280    }
1281}
1282/// TODO This belongs in features
1283#[derive(serde::Serialize)]
1284#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1285#[repr(i32)]
1286pub enum SortOp {
1287    SortNone = 0,
1288    SortAsc = 1,
1289    SortDesc = 2,
1290    SortColAsc = 3,
1291    SortColDesc = 4,
1292    SortAscAbs = 5,
1293    SortDescAbs = 6,
1294    SortColAscAbs = 7,
1295    SortColDescAbs = 8,
1296}
1297impl SortOp {
1298    /// String value of the enum field names used in the ProtoBuf definition.
1299    ///
1300    /// The values are not transformed in any way and thus are considered stable
1301    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1302    pub fn as_str_name(&self) -> &'static str {
1303        match self {
1304            SortOp::SortNone => "SORT_NONE",
1305            SortOp::SortAsc => "SORT_ASC",
1306            SortOp::SortDesc => "SORT_DESC",
1307            SortOp::SortColAsc => "SORT_COL_ASC",
1308            SortOp::SortColDesc => "SORT_COL_DESC",
1309            SortOp::SortAscAbs => "SORT_ASC_ABS",
1310            SortOp::SortDescAbs => "SORT_DESC_ABS",
1311            SortOp::SortColAscAbs => "SORT_COL_ASC_ABS",
1312            SortOp::SortColDescAbs => "SORT_COL_DESC_ABS",
1313        }
1314    }
1315    /// Creates an enum from field names used in the ProtoBuf definition.
1316    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1317        match value {
1318            "SORT_NONE" => Some(Self::SortNone),
1319            "SORT_ASC" => Some(Self::SortAsc),
1320            "SORT_DESC" => Some(Self::SortDesc),
1321            "SORT_COL_ASC" => Some(Self::SortColAsc),
1322            "SORT_COL_DESC" => Some(Self::SortColDesc),
1323            "SORT_ASC_ABS" => Some(Self::SortAscAbs),
1324            "SORT_DESC_ABS" => Some(Self::SortDescAbs),
1325            "SORT_COL_ASC_ABS" => Some(Self::SortColAscAbs),
1326            "SORT_COL_DESC_ABS" => Some(Self::SortColDescAbs),
1327            _ => None,
1328        }
1329    }
1330}
1331#[derive(serde::Serialize)]
1332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1333#[repr(i32)]
1334pub enum GroupRollupMode {
1335    Rollup = 0,
1336    Flat = 1,
1337    Total = 2,
1338}
1339impl GroupRollupMode {
1340    /// String value of the enum field names used in the ProtoBuf definition.
1341    ///
1342    /// The values are not transformed in any way and thus are considered stable
1343    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1344    pub fn as_str_name(&self) -> &'static str {
1345        match self {
1346            GroupRollupMode::Rollup => "ROLLUP",
1347            GroupRollupMode::Flat => "FLAT",
1348            GroupRollupMode::Total => "TOTAL",
1349        }
1350    }
1351    /// Creates an enum from field names used in the ProtoBuf definition.
1352    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1353        match value {
1354            "ROLLUP" => Some(Self::Rollup),
1355            "FLAT" => Some(Self::Flat),
1356            "TOTAL" => Some(Self::Total),
1357            _ => None,
1358        }
1359    }
1360}
1361/// The `split_by` corollary to `GroupRollupMode`. `FLAT` (the wire default)
1362/// is the historical behavior - only full-depth split combinations are
1363/// emitted as columns. `ROLLUP` additionally emits grand-total and subtotal
1364/// column groups in pre-order ("totals before"). Enum value names are
1365/// prefixed because proto enum values share their parent scope with
1366/// `GroupRollupMode`'s.
1367#[derive(serde::Serialize)]
1368#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1369#[repr(i32)]
1370pub enum SplitRollupMode {
1371    Flat = 0,
1372    Rollup = 1,
1373}
1374impl SplitRollupMode {
1375    /// String value of the enum field names used in the ProtoBuf definition.
1376    ///
1377    /// The values are not transformed in any way and thus are considered stable
1378    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1379    pub fn as_str_name(&self) -> &'static str {
1380        match self {
1381            SplitRollupMode::Flat => "SPLIT_ROLLUP_MODE_FLAT",
1382            SplitRollupMode::Rollup => "SPLIT_ROLLUP_MODE_ROLLUP",
1383        }
1384    }
1385    /// Creates an enum from field names used in the ProtoBuf definition.
1386    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1387        match value {
1388            "SPLIT_ROLLUP_MODE_FLAT" => Some(Self::Flat),
1389            "SPLIT_ROLLUP_MODE_ROLLUP" => Some(Self::Rollup),
1390            _ => None,
1391        }
1392    }
1393}
1394#[derive(serde::Deserialize, ts_rs::TS)]
1395#[serde(rename_all = "snake_case")]
1396#[derive(serde::Serialize)]
1397#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1398#[repr(i32)]
1399pub enum ListFlatten {
1400    Zip = 0,
1401    Cartesian = 1,
1402    Stringify = 2,
1403}
1404impl ListFlatten {
1405    /// String value of the enum field names used in the ProtoBuf definition.
1406    ///
1407    /// The values are not transformed in any way and thus are considered stable
1408    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1409    pub fn as_str_name(&self) -> &'static str {
1410        match self {
1411            ListFlatten::Zip => "LIST_FLATTEN_ZIP",
1412            ListFlatten::Cartesian => "LIST_FLATTEN_CARTESIAN",
1413            ListFlatten::Stringify => "LIST_FLATTEN_STRINGIFY",
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            "LIST_FLATTEN_ZIP" => Some(Self::Zip),
1420            "LIST_FLATTEN_CARTESIAN" => Some(Self::Cartesian),
1421            "LIST_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1422            _ => None,
1423        }
1424    }
1425}
1426#[derive(serde::Deserialize, ts_rs::TS)]
1427#[serde(rename_all = "snake_case")]
1428#[derive(serde::Serialize)]
1429#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1430#[repr(i32)]
1431pub enum JoinType {
1432    Inner = 0,
1433    Left = 1,
1434    Outer = 2,
1435}
1436impl JoinType {
1437    /// String value of the enum field names used in the ProtoBuf definition.
1438    ///
1439    /// The values are not transformed in any way and thus are considered stable
1440    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1441    pub fn as_str_name(&self) -> &'static str {
1442        match self {
1443            JoinType::Inner => "INNER",
1444            JoinType::Left => "LEFT",
1445            JoinType::Outer => "OUTER",
1446        }
1447    }
1448    /// Creates an enum from field names used in the ProtoBuf definition.
1449    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1450        match value {
1451            "INNER" => Some(Self::Inner),
1452            "LEFT" => Some(Self::Left),
1453            "OUTER" => Some(Self::Outer),
1454            _ => None,
1455        }
1456    }
1457}