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(ts_rs::TS)]
736#[derive(serde::Serialize)]
737#[allow(clippy::derive_partial_eq_without_eq)]
738#[derive(Clone, PartialEq, ::prost::Message)]
739pub struct ViewOnRemoveResp {
740    #[prost(bytes = "vec", optional, tag = "1")]
741    #[ts(type = "Uint8Array")]
742    #[serde(with = "serde_bytes")]
743    pub indices: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
744    #[prost(uint32, tag = "2")]
745    pub port_id: u32,
746}
747/// `View::remove_remove`
748#[derive(serde::Serialize)]
749#[allow(clippy::derive_partial_eq_without_eq)]
750#[derive(Clone, PartialEq, ::prost::Message)]
751pub struct ViewRemoveOnRemoveReq {
752    #[prost(uint32, tag = "1")]
753    pub id: u32,
754}
755#[derive(serde::Serialize)]
756#[allow(clippy::derive_partial_eq_without_eq)]
757#[derive(Clone, PartialEq, ::prost::Message)]
758pub struct ViewRemoveOnRemoveResp {}
759/// `Table::update`
760#[derive(serde::Serialize)]
761#[allow(clippy::derive_partial_eq_without_eq)]
762#[derive(Clone, PartialEq, ::prost::Message)]
763pub struct TableUpdateReq {
764    #[prost(message, optional, tag = "1")]
765    pub data: ::core::option::Option<MakeTableData>,
766    #[prost(uint32, tag = "2")]
767    pub port_id: u32,
768}
769#[derive(serde::Serialize)]
770#[allow(clippy::derive_partial_eq_without_eq)]
771#[derive(Clone, PartialEq, ::prost::Message)]
772pub struct TableUpdateResp {}
773/// `Table::replace`
774#[derive(serde::Serialize)]
775#[allow(clippy::derive_partial_eq_without_eq)]
776#[derive(Clone, PartialEq, ::prost::Message)]
777pub struct TableReplaceReq {
778    #[prost(message, optional, tag = "1")]
779    pub data: ::core::option::Option<MakeTableData>,
780}
781#[derive(serde::Serialize)]
782#[allow(clippy::derive_partial_eq_without_eq)]
783#[derive(Clone, PartialEq, ::prost::Message)]
784pub struct TableReplaceResp {}
785/// `Table::remove`
786#[derive(serde::Serialize)]
787#[allow(clippy::derive_partial_eq_without_eq)]
788#[derive(Clone, PartialEq, ::prost::Message)]
789pub struct TableRemoveReq {
790    #[prost(message, optional, tag = "1")]
791    pub data: ::core::option::Option<MakeTableData>,
792}
793#[derive(serde::Serialize)]
794#[allow(clippy::derive_partial_eq_without_eq)]
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct TableRemoveResp {}
797#[derive(serde::Serialize)]
798#[allow(clippy::derive_partial_eq_without_eq)]
799#[derive(Clone, PartialEq, ::prost::Message)]
800pub struct ViewOnUpdateReq {
801    #[prost(enumeration = "view_on_update_req::Mode", optional, tag = "1")]
802    pub mode: ::core::option::Option<i32>,
803}
804/// Nested message and enum types in `ViewOnUpdateReq`.
805pub mod view_on_update_req {
806    #[derive(serde::Serialize)]
807    #[derive(
808        Clone,
809        Copy,
810        Debug,
811        PartialEq,
812        Eq,
813        Hash,
814        PartialOrd,
815        Ord,
816        ::prost::Enumeration
817    )]
818    #[repr(i32)]
819    pub enum Mode {
820        Row = 0,
821    }
822    impl Mode {
823        /// String value of the enum field names used in the ProtoBuf definition.
824        ///
825        /// The values are not transformed in any way and thus are considered stable
826        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
827        pub fn as_str_name(&self) -> &'static str {
828            match self {
829                Mode::Row => "ROW",
830            }
831        }
832        /// Creates an enum from field names used in the ProtoBuf definition.
833        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
834            match value {
835                "ROW" => Some(Self::Row),
836                _ => None,
837            }
838        }
839    }
840}
841#[derive(ts_rs::TS)]
842#[derive(serde::Serialize)]
843#[allow(clippy::derive_partial_eq_without_eq)]
844#[derive(Clone, PartialEq, ::prost::Message)]
845pub struct ViewOnUpdateResp {
846    #[prost(bytes = "vec", optional, tag = "1")]
847    #[ts(type = "Uint8Array | undefined")]
848    #[serde(with = "serde_bytes")]
849    pub delta: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
850    #[prost(uint32, tag = "2")]
851    pub port_id: u32,
852    #[prost(bool, tag = "3")]
853    pub reset: bool,
854}
855#[derive(serde::Serialize)]
856#[allow(clippy::derive_partial_eq_without_eq)]
857#[derive(Clone, PartialEq, ::prost::Message)]
858pub struct ViewOnDeleteReq {}
859#[derive(serde::Serialize)]
860#[allow(clippy::derive_partial_eq_without_eq)]
861#[derive(Clone, PartialEq, ::prost::Message)]
862pub struct ViewOnDeleteResp {}
863#[derive(serde::Serialize)]
864#[allow(clippy::derive_partial_eq_without_eq)]
865#[derive(Clone, PartialEq, ::prost::Message)]
866pub struct ViewRemoveDeleteReq {
867    #[prost(uint32, tag = "1")]
868    pub id: u32,
869}
870#[derive(serde::Serialize)]
871#[allow(clippy::derive_partial_eq_without_eq)]
872#[derive(Clone, PartialEq, ::prost::Message)]
873pub struct ViewRemoveDeleteResp {}
874#[derive(serde::Serialize)]
875#[allow(clippy::derive_partial_eq_without_eq)]
876#[derive(Clone, PartialEq, ::prost::Message)]
877pub struct ViewToColumnsStringReq {
878    #[prost(message, optional, tag = "1")]
879    pub viewport: ::core::option::Option<ViewPort>,
880    #[prost(bool, optional, tag = "2")]
881    pub id: ::core::option::Option<bool>,
882    #[prost(bool, optional, tag = "3")]
883    pub index: ::core::option::Option<bool>,
884    #[prost(bool, optional, tag = "4")]
885    pub formatted: ::core::option::Option<bool>,
886}
887#[derive(serde::Serialize)]
888#[allow(clippy::derive_partial_eq_without_eq)]
889#[derive(Clone, PartialEq, ::prost::Message)]
890pub struct ViewToColumnsStringResp {
891    #[prost(string, tag = "1")]
892    pub json_string: ::prost::alloc::string::String,
893}
894#[derive(serde::Serialize)]
895#[allow(clippy::derive_partial_eq_without_eq)]
896#[derive(Clone, PartialEq, ::prost::Message)]
897pub struct ViewToRowsStringReq {
898    #[prost(message, optional, tag = "1")]
899    pub viewport: ::core::option::Option<ViewPort>,
900    #[prost(bool, optional, tag = "2")]
901    pub id: ::core::option::Option<bool>,
902    #[prost(bool, optional, tag = "3")]
903    pub index: ::core::option::Option<bool>,
904    #[prost(bool, optional, tag = "4")]
905    pub formatted: ::core::option::Option<bool>,
906}
907#[derive(serde::Serialize)]
908#[allow(clippy::derive_partial_eq_without_eq)]
909#[derive(Clone, PartialEq, ::prost::Message)]
910pub struct ViewToRowsStringResp {
911    #[prost(string, tag = "1")]
912    pub json_string: ::prost::alloc::string::String,
913}
914#[derive(serde::Serialize)]
915#[allow(clippy::derive_partial_eq_without_eq)]
916#[derive(Clone, PartialEq, ::prost::Message)]
917pub struct ViewToNdjsonStringReq {
918    #[prost(message, optional, tag = "1")]
919    pub viewport: ::core::option::Option<ViewPort>,
920    #[prost(bool, optional, tag = "2")]
921    pub id: ::core::option::Option<bool>,
922    #[prost(bool, optional, tag = "3")]
923    pub index: ::core::option::Option<bool>,
924    #[prost(bool, optional, tag = "4")]
925    pub formatted: ::core::option::Option<bool>,
926}
927#[derive(serde::Serialize)]
928#[allow(clippy::derive_partial_eq_without_eq)]
929#[derive(Clone, PartialEq, ::prost::Message)]
930pub struct ViewToNdjsonStringResp {
931    #[prost(string, tag = "1")]
932    pub ndjson_string: ::prost::alloc::string::String,
933}
934#[derive(serde::Serialize)]
935#[allow(clippy::derive_partial_eq_without_eq)]
936#[derive(Clone, PartialEq, ::prost::Message)]
937pub struct ViewToArrowReq {
938    #[prost(message, optional, tag = "1")]
939    pub viewport: ::core::option::Option<ViewPort>,
940    #[prost(string, optional, tag = "2")]
941    pub compression: ::core::option::Option<::prost::alloc::string::String>,
942}
943#[derive(serde::Serialize)]
944#[allow(clippy::derive_partial_eq_without_eq)]
945#[derive(Clone, PartialEq, ::prost::Message)]
946pub struct ViewToArrowResp {
947    #[prost(bytes = "vec", tag = "1")]
948    #[serde(skip)]
949    pub arrow: ::prost::alloc::vec::Vec<u8>,
950}
951#[derive(serde::Serialize)]
952#[allow(clippy::derive_partial_eq_without_eq)]
953#[derive(Clone, PartialEq, ::prost::Message)]
954pub struct ViewColumnPathsReq {
955    #[prost(uint32, optional, tag = "1")]
956    pub start_col: ::core::option::Option<u32>,
957    #[prost(uint32, optional, tag = "2")]
958    pub end_col: ::core::option::Option<u32>,
959}
960/// One row of a column path area, `width` values long.
961#[derive(serde::Serialize)]
962#[allow(clippy::derive_partial_eq_without_eq)]
963#[derive(Clone, PartialEq, ::prost::Message)]
964pub struct ColumnPathLevel {
965    #[prost(message, repeated, tag = "1")]
966    pub values: ::prost::alloc::vec::Vec<Scalar>,
967}
968#[derive(serde::Serialize)]
969#[allow(clippy::derive_partial_eq_without_eq)]
970#[derive(Clone, PartialEq, ::prost::Message)]
971pub struct ViewColumnPathsResp {
972    /// Transposed, `split_by.len() + 1` rows of `width` values each.
973    #[prost(message, repeated, tag = "2")]
974    pub area: ::prost::alloc::vec::Vec<ColumnPathLevel>,
975}
976#[derive(serde::Serialize)]
977#[allow(clippy::derive_partial_eq_without_eq)]
978#[derive(Clone, PartialEq, ::prost::Message)]
979pub struct ViewDeleteReq {}
980#[derive(serde::Serialize)]
981#[allow(clippy::derive_partial_eq_without_eq)]
982#[derive(Clone, PartialEq, ::prost::Message)]
983pub struct ViewDeleteResp {}
984#[derive(serde::Serialize)]
985#[allow(clippy::derive_partial_eq_without_eq)]
986#[derive(Clone, PartialEq, ::prost::Message)]
987pub struct ViewGetMinMaxReq {
988    #[prost(string, tag = "1")]
989    pub column_name: ::prost::alloc::string::String,
990}
991#[derive(serde::Serialize)]
992#[allow(clippy::derive_partial_eq_without_eq)]
993#[derive(Clone, PartialEq, ::prost::Message)]
994pub struct ViewGetMinMaxResp {
995    #[prost(message, optional, tag = "1")]
996    pub min: ::core::option::Option<Scalar>,
997    #[prost(message, optional, tag = "2")]
998    pub max: ::core::option::Option<Scalar>,
999}
1000#[derive(serde::Serialize)]
1001#[allow(clippy::derive_partial_eq_without_eq)]
1002#[derive(Clone, PartialEq, ::prost::Message)]
1003pub struct ViewExpressionSchemaReq {}
1004#[derive(serde::Serialize)]
1005#[allow(clippy::derive_partial_eq_without_eq)]
1006#[derive(Clone, PartialEq, ::prost::Message)]
1007pub struct ViewExpressionSchemaResp {
1008    #[prost(map = "string, enumeration(ColumnType)", tag = "1")]
1009    pub schema: ::std::collections::HashMap<::prost::alloc::string::String, i32>,
1010}
1011#[derive(serde::Serialize)]
1012#[allow(clippy::derive_partial_eq_without_eq)]
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct ViewToCsvReq {
1015    #[prost(message, optional, tag = "1")]
1016    pub viewport: ::core::option::Option<ViewPort>,
1017}
1018#[derive(serde::Serialize)]
1019#[allow(clippy::derive_partial_eq_without_eq)]
1020#[derive(Clone, PartialEq, ::prost::Message)]
1021pub struct ViewToCsvResp {
1022    #[prost(string, tag = "1")]
1023    pub csv: ::prost::alloc::string::String,
1024}
1025#[derive(serde::Serialize)]
1026#[allow(clippy::derive_partial_eq_without_eq)]
1027#[derive(Clone, PartialEq, ::prost::Message)]
1028pub struct ViewRemoveOnUpdateReq {
1029    #[prost(uint32, tag = "1")]
1030    pub id: u32,
1031}
1032#[derive(serde::Serialize)]
1033#[allow(clippy::derive_partial_eq_without_eq)]
1034#[derive(Clone, PartialEq, ::prost::Message)]
1035pub struct ViewRemoveOnUpdateResp {}
1036#[derive(serde::Serialize)]
1037#[allow(clippy::derive_partial_eq_without_eq)]
1038#[derive(Clone, PartialEq, ::prost::Message)]
1039pub struct ViewCollapseReq {
1040    #[prost(uint32, tag = "1")]
1041    pub row_index: u32,
1042}
1043#[derive(serde::Serialize)]
1044#[allow(clippy::derive_partial_eq_without_eq)]
1045#[derive(Clone, PartialEq, ::prost::Message)]
1046pub struct ViewCollapseResp {
1047    #[prost(uint32, tag = "1")]
1048    pub num_changed: u32,
1049}
1050#[derive(serde::Serialize)]
1051#[allow(clippy::derive_partial_eq_without_eq)]
1052#[derive(Clone, PartialEq, ::prost::Message)]
1053pub struct ViewExpandReq {
1054    #[prost(uint32, tag = "1")]
1055    pub row_index: u32,
1056}
1057#[derive(serde::Serialize)]
1058#[allow(clippy::derive_partial_eq_without_eq)]
1059#[derive(Clone, PartialEq, ::prost::Message)]
1060pub struct ViewExpandResp {
1061    #[prost(uint32, tag = "1")]
1062    pub num_changed: u32,
1063}
1064/// `View::set_depth`
1065#[derive(serde::Serialize)]
1066#[allow(clippy::derive_partial_eq_without_eq)]
1067#[derive(Clone, PartialEq, ::prost::Message)]
1068pub struct ViewSetDepthReq {
1069    #[prost(uint32, tag = "1")]
1070    pub depth: u32,
1071}
1072#[derive(serde::Serialize)]
1073#[allow(clippy::derive_partial_eq_without_eq)]
1074#[derive(Clone, PartialEq, ::prost::Message)]
1075pub struct ViewSetDepthResp {}
1076#[derive(serde::Serialize)]
1077#[allow(clippy::derive_partial_eq_without_eq)]
1078#[derive(Clone, PartialEq, ::prost::Message)]
1079pub struct ServerSystemInfoReq {}
1080#[derive(serde::Serialize)]
1081#[allow(clippy::derive_partial_eq_without_eq)]
1082#[derive(Clone, PartialEq, ::prost::Message)]
1083pub struct ServerSystemInfoResp {
1084    #[prost(uint64, tag = "1")]
1085    pub heap_size: u64,
1086    #[prost(uint64, tag = "2")]
1087    pub used_size: u64,
1088    #[prost(uint32, tag = "3")]
1089    pub cpu_time: u32,
1090    #[prost(uint32, tag = "4")]
1091    pub cpu_time_epoch: u32,
1092}
1093#[derive(serde::Serialize)]
1094#[allow(clippy::derive_partial_eq_without_eq)]
1095#[derive(Clone, PartialEq, ::prost::Message)]
1096pub struct WindowSpec {
1097    #[prost(string, tag = "2")]
1098    pub source: ::prost::alloc::string::String,
1099    /// The aggregate, in the data model's own vocabulary - see
1100    /// `GetFeaturesResp.WindowAggregateArgs`. A string rather than an enum so
1101    /// that a `View` can carry an op the built-in engine has never heard of,
1102    /// e.g. kdb+'s `mdev`.
1103    #[prost(string, tag = "3")]
1104    pub op: ::prost::alloc::string::String,
1105    #[prost(string, repeated, tag = "4")]
1106    pub partition_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1107    #[prost(message, optional, tag = "5")]
1108    pub order_by: ::core::option::Option<window_spec::Order>,
1109    #[prost(uint32, optional, tag = "9")]
1110    pub offset: ::core::option::Option<u32>,
1111    #[prost(double, optional, tag = "10")]
1112    pub alpha: ::core::option::Option<f64>,
1113    #[prost(oneof = "window_spec::Frame", tags = "6, 7, 8")]
1114    pub frame: ::core::option::Option<window_spec::Frame>,
1115}
1116/// Nested message and enum types in `WindowSpec`.
1117pub mod window_spec {
1118    #[derive(serde::Serialize)]
1119    #[allow(clippy::derive_partial_eq_without_eq)]
1120    #[derive(Clone, PartialEq, ::prost::Message)]
1121    pub struct Order {
1122        #[prost(string, tag = "1")]
1123        pub column: ::prost::alloc::string::String,
1124        #[prost(bool, tag = "2")]
1125        pub desc: bool,
1126    }
1127    #[derive(serde::Serialize)]
1128    #[allow(clippy::derive_partial_eq_without_eq)]
1129    #[derive(Clone, PartialEq, ::prost::Oneof)]
1130    pub enum Frame {
1131        #[prost(uint32, tag = "6")]
1132        Rows(u32),
1133        #[prost(double, tag = "7")]
1134        Range(f64),
1135        #[prost(enumeration = "::prost_types::NullValue", tag = "8")]
1136        Cumulative(i32),
1137    }
1138}
1139#[derive(serde::Serialize)]
1140#[allow(clippy::derive_partial_eq_without_eq)]
1141#[derive(Clone, PartialEq, ::prost::Message)]
1142pub struct ViewConfig {
1143    #[prost(string, repeated, tag = "1")]
1144    pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1145    #[prost(string, repeated, tag = "2")]
1146    pub split_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1147    #[prost(message, optional, tag = "3")]
1148    pub columns: ::core::option::Option<ColumnsUpdate>,
1149    #[prost(message, repeated, tag = "4")]
1150    pub filter: ::prost::alloc::vec::Vec<view_config::Filter>,
1151    #[prost(message, repeated, tag = "5")]
1152    pub sort: ::prost::alloc::vec::Vec<view_config::Sort>,
1153    #[prost(map = "string, string", tag = "6")]
1154    pub expressions: ::std::collections::HashMap<
1155        ::prost::alloc::string::String,
1156        ::prost::alloc::string::String,
1157    >,
1158    #[prost(map = "string, message", tag = "7")]
1159    pub aggregates: ::std::collections::HashMap<
1160        ::prost::alloc::string::String,
1161        view_config::AggList,
1162    >,
1163    #[prost(enumeration = "view_config::FilterReducer", tag = "8")]
1164    pub filter_op: i32,
1165    #[prost(uint32, optional, tag = "9")]
1166    pub group_by_depth: ::core::option::Option<u32>,
1167    #[prost(enumeration = "GroupRollupMode", optional, tag = "10")]
1168    pub group_rollup_mode: ::core::option::Option<i32>,
1169    #[prost(map = "string, message", tag = "11")]
1170    pub windows: ::std::collections::HashMap<::prost::alloc::string::String, WindowSpec>,
1171    #[prost(enumeration = "SplitRollupMode", optional, tag = "12")]
1172    pub split_rollup_mode: ::core::option::Option<i32>,
1173}
1174/// Nested message and enum types in `ViewConfig`.
1175pub mod view_config {
1176    #[derive(serde::Serialize)]
1177    #[allow(clippy::derive_partial_eq_without_eq)]
1178    #[derive(Clone, PartialEq, ::prost::Message)]
1179    pub struct AggList {
1180        #[prost(string, repeated, tag = "1")]
1181        pub aggregations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1182    }
1183    #[derive(serde::Serialize)]
1184    #[allow(clippy::derive_partial_eq_without_eq)]
1185    #[derive(Clone, PartialEq, ::prost::Message)]
1186    pub struct Sort {
1187        #[prost(string, tag = "1")]
1188        pub column: ::prost::alloc::string::String,
1189        #[prost(enumeration = "super::SortOp", tag = "2")]
1190        pub op: i32,
1191    }
1192    #[derive(serde::Serialize)]
1193    #[allow(clippy::derive_partial_eq_without_eq)]
1194    #[derive(Clone, PartialEq, ::prost::Message)]
1195    pub struct Filter {
1196        #[prost(string, tag = "1")]
1197        pub column: ::prost::alloc::string::String,
1198        #[prost(string, tag = "2")]
1199        pub op: ::prost::alloc::string::String,
1200        #[prost(message, repeated, tag = "3")]
1201        pub value: ::prost::alloc::vec::Vec<super::Scalar>,
1202    }
1203    #[derive(serde::Serialize)]
1204    #[derive(
1205        Clone,
1206        Copy,
1207        Debug,
1208        PartialEq,
1209        Eq,
1210        Hash,
1211        PartialOrd,
1212        Ord,
1213        ::prost::Enumeration
1214    )]
1215    #[repr(i32)]
1216    pub enum FilterReducer {
1217        And = 0,
1218        Or = 1,
1219    }
1220    impl FilterReducer {
1221        /// String value of the enum field names used in the ProtoBuf definition.
1222        ///
1223        /// The values are not transformed in any way and thus are considered stable
1224        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1225        pub fn as_str_name(&self) -> &'static str {
1226            match self {
1227                FilterReducer::And => "AND",
1228                FilterReducer::Or => "OR",
1229            }
1230        }
1231        /// Creates an enum from field names used in the ProtoBuf definition.
1232        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1233            match value {
1234                "AND" => Some(Self::And),
1235                "OR" => Some(Self::Or),
1236                _ => None,
1237            }
1238        }
1239    }
1240}
1241#[derive(serde::Serialize)]
1242#[allow(clippy::derive_partial_eq_without_eq)]
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct ColumnsUpdate {
1245    #[prost(oneof = "columns_update::OptColumns", tags = "1, 2")]
1246    pub opt_columns: ::core::option::Option<columns_update::OptColumns>,
1247}
1248/// Nested message and enum types in `ColumnsUpdate`.
1249pub mod columns_update {
1250    #[derive(serde::Serialize)]
1251    #[allow(clippy::derive_partial_eq_without_eq)]
1252    #[derive(Clone, PartialEq, ::prost::Message)]
1253    pub struct Columns {
1254        #[prost(string, repeated, tag = "1")]
1255        pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1256    }
1257    #[derive(serde::Serialize)]
1258    #[allow(clippy::derive_partial_eq_without_eq)]
1259    #[derive(Clone, PartialEq, ::prost::Oneof)]
1260    pub enum OptColumns {
1261        #[prost(enumeration = "::prost_types::NullValue", tag = "1")]
1262        DefaultColumns(i32),
1263        #[prost(message, tag = "2")]
1264        Columns(Columns),
1265    }
1266}
1267#[derive(serde::Serialize)]
1268#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1269#[repr(i32)]
1270pub enum StatusCode {
1271    ServerError = 0,
1272    ViewNotFound = 1,
1273    TransportError = 2,
1274}
1275impl StatusCode {
1276    /// String value of the enum field names used in the ProtoBuf definition.
1277    ///
1278    /// The values are not transformed in any way and thus are considered stable
1279    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1280    pub fn as_str_name(&self) -> &'static str {
1281        match self {
1282            StatusCode::ServerError => "SERVER_ERROR",
1283            StatusCode::ViewNotFound => "VIEW_NOT_FOUND",
1284            StatusCode::TransportError => "TRANSPORT_ERROR",
1285        }
1286    }
1287    /// Creates an enum from field names used in the ProtoBuf definition.
1288    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1289        match value {
1290            "SERVER_ERROR" => Some(Self::ServerError),
1291            "VIEW_NOT_FOUND" => Some(Self::ViewNotFound),
1292            "TRANSPORT_ERROR" => Some(Self::TransportError),
1293            _ => None,
1294        }
1295    }
1296}
1297/// View types
1298#[derive(ts_rs::TS)]
1299#[derive(serde::Serialize)]
1300#[derive(serde::Deserialize)]
1301#[serde(rename_all = "snake_case")]
1302#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1303#[repr(i32)]
1304pub enum ColumnType {
1305    String = 0,
1306    Date = 1,
1307    Datetime = 2,
1308    Integer = 3,
1309    Float = 4,
1310    Boolean = 5,
1311}
1312impl ColumnType {
1313    /// String value of the enum field names used in the ProtoBuf definition.
1314    ///
1315    /// The values are not transformed in any way and thus are considered stable
1316    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1317    pub fn as_str_name(&self) -> &'static str {
1318        match self {
1319            ColumnType::String => "STRING",
1320            ColumnType::Date => "DATE",
1321            ColumnType::Datetime => "DATETIME",
1322            ColumnType::Integer => "INTEGER",
1323            ColumnType::Float => "FLOAT",
1324            ColumnType::Boolean => "BOOLEAN",
1325        }
1326    }
1327    /// Creates an enum from field names used in the ProtoBuf definition.
1328    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1329        match value {
1330            "STRING" => Some(Self::String),
1331            "DATE" => Some(Self::Date),
1332            "DATETIME" => Some(Self::Datetime),
1333            "INTEGER" => Some(Self::Integer),
1334            "FLOAT" => Some(Self::Float),
1335            "BOOLEAN" => Some(Self::Boolean),
1336            _ => None,
1337        }
1338    }
1339}
1340/// TODO This belongs in features
1341#[derive(serde::Serialize)]
1342#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1343#[repr(i32)]
1344pub enum SortOp {
1345    SortNone = 0,
1346    SortAsc = 1,
1347    SortDesc = 2,
1348    SortColAsc = 3,
1349    SortColDesc = 4,
1350    SortAscAbs = 5,
1351    SortDescAbs = 6,
1352    SortColAscAbs = 7,
1353    SortColDescAbs = 8,
1354}
1355impl SortOp {
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            SortOp::SortNone => "SORT_NONE",
1363            SortOp::SortAsc => "SORT_ASC",
1364            SortOp::SortDesc => "SORT_DESC",
1365            SortOp::SortColAsc => "SORT_COL_ASC",
1366            SortOp::SortColDesc => "SORT_COL_DESC",
1367            SortOp::SortAscAbs => "SORT_ASC_ABS",
1368            SortOp::SortDescAbs => "SORT_DESC_ABS",
1369            SortOp::SortColAscAbs => "SORT_COL_ASC_ABS",
1370            SortOp::SortColDescAbs => "SORT_COL_DESC_ABS",
1371        }
1372    }
1373    /// Creates an enum from field names used in the ProtoBuf definition.
1374    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1375        match value {
1376            "SORT_NONE" => Some(Self::SortNone),
1377            "SORT_ASC" => Some(Self::SortAsc),
1378            "SORT_DESC" => Some(Self::SortDesc),
1379            "SORT_COL_ASC" => Some(Self::SortColAsc),
1380            "SORT_COL_DESC" => Some(Self::SortColDesc),
1381            "SORT_ASC_ABS" => Some(Self::SortAscAbs),
1382            "SORT_DESC_ABS" => Some(Self::SortDescAbs),
1383            "SORT_COL_ASC_ABS" => Some(Self::SortColAscAbs),
1384            "SORT_COL_DESC_ABS" => Some(Self::SortColDescAbs),
1385            _ => None,
1386        }
1387    }
1388}
1389#[derive(serde::Serialize)]
1390#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1391#[repr(i32)]
1392pub enum GroupRollupMode {
1393    Rollup = 0,
1394    Flat = 1,
1395    Total = 2,
1396}
1397impl GroupRollupMode {
1398    /// String value of the enum field names used in the ProtoBuf definition.
1399    ///
1400    /// The values are not transformed in any way and thus are considered stable
1401    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1402    pub fn as_str_name(&self) -> &'static str {
1403        match self {
1404            GroupRollupMode::Rollup => "ROLLUP",
1405            GroupRollupMode::Flat => "FLAT",
1406            GroupRollupMode::Total => "TOTAL",
1407        }
1408    }
1409    /// Creates an enum from field names used in the ProtoBuf definition.
1410    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1411        match value {
1412            "ROLLUP" => Some(Self::Rollup),
1413            "FLAT" => Some(Self::Flat),
1414            "TOTAL" => Some(Self::Total),
1415            _ => None,
1416        }
1417    }
1418}
1419/// The `split_by` corollary to `GroupRollupMode`. `FLAT` (the wire default)
1420/// is the historical behavior - only full-depth split combinations are
1421/// emitted as columns. `ROLLUP` additionally emits grand-total and subtotal
1422/// column groups in pre-order ("totals before"). Enum value names are
1423/// prefixed because proto enum values share their parent scope with
1424/// `GroupRollupMode`'s.
1425#[derive(serde::Serialize)]
1426#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1427#[repr(i32)]
1428pub enum SplitRollupMode {
1429    Flat = 0,
1430    Rollup = 1,
1431}
1432impl SplitRollupMode {
1433    /// String value of the enum field names used in the ProtoBuf definition.
1434    ///
1435    /// The values are not transformed in any way and thus are considered stable
1436    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1437    pub fn as_str_name(&self) -> &'static str {
1438        match self {
1439            SplitRollupMode::Flat => "SPLIT_ROLLUP_MODE_FLAT",
1440            SplitRollupMode::Rollup => "SPLIT_ROLLUP_MODE_ROLLUP",
1441        }
1442    }
1443    /// Creates an enum from field names used in the ProtoBuf definition.
1444    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1445        match value {
1446            "SPLIT_ROLLUP_MODE_FLAT" => Some(Self::Flat),
1447            "SPLIT_ROLLUP_MODE_ROLLUP" => Some(Self::Rollup),
1448            _ => None,
1449        }
1450    }
1451}
1452#[derive(serde::Deserialize, ts_rs::TS)]
1453#[serde(rename_all = "snake_case")]
1454#[derive(serde::Serialize)]
1455#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1456#[repr(i32)]
1457pub enum ListFlatten {
1458    Zip = 0,
1459    Cartesian = 1,
1460    Stringify = 2,
1461    StringifyFormatted = 3,
1462}
1463impl ListFlatten {
1464    /// String value of the enum field names used in the ProtoBuf definition.
1465    ///
1466    /// The values are not transformed in any way and thus are considered stable
1467    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1468    pub fn as_str_name(&self) -> &'static str {
1469        match self {
1470            ListFlatten::Zip => "LIST_FLATTEN_ZIP",
1471            ListFlatten::Cartesian => "LIST_FLATTEN_CARTESIAN",
1472            ListFlatten::Stringify => "LIST_FLATTEN_STRINGIFY",
1473            ListFlatten::StringifyFormatted => "LIST_FLATTEN_STRINGIFY_FORMATTED",
1474        }
1475    }
1476    /// Creates an enum from field names used in the ProtoBuf definition.
1477    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1478        match value {
1479            "LIST_FLATTEN_ZIP" => Some(Self::Zip),
1480            "LIST_FLATTEN_CARTESIAN" => Some(Self::Cartesian),
1481            "LIST_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1482            "LIST_FLATTEN_STRINGIFY_FORMATTED" => Some(Self::StringifyFormatted),
1483            _ => None,
1484        }
1485    }
1486}
1487#[derive(serde::Deserialize, ts_rs::TS)]
1488#[serde(rename_all = "snake_case")]
1489#[derive(serde::Serialize)]
1490#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1491#[repr(i32)]
1492pub enum StructFlatten {
1493    Pivot = 0,
1494    Stringify = 1,
1495    StringifyFormatted = 2,
1496}
1497impl StructFlatten {
1498    /// String value of the enum field names used in the ProtoBuf definition.
1499    ///
1500    /// The values are not transformed in any way and thus are considered stable
1501    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1502    pub fn as_str_name(&self) -> &'static str {
1503        match self {
1504            StructFlatten::Pivot => "STRUCT_FLATTEN_PIVOT",
1505            StructFlatten::Stringify => "STRUCT_FLATTEN_STRINGIFY",
1506            StructFlatten::StringifyFormatted => "STRUCT_FLATTEN_STRINGIFY_FORMATTED",
1507        }
1508    }
1509    /// Creates an enum from field names used in the ProtoBuf definition.
1510    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1511        match value {
1512            "STRUCT_FLATTEN_PIVOT" => Some(Self::Pivot),
1513            "STRUCT_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1514            "STRUCT_FLATTEN_STRINGIFY_FORMATTED" => Some(Self::StringifyFormatted),
1515            _ => None,
1516        }
1517    }
1518}
1519#[derive(serde::Deserialize, ts_rs::TS)]
1520#[serde(rename_all = "snake_case")]
1521#[derive(serde::Serialize)]
1522#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1523#[repr(i32)]
1524pub enum MapFlatten {
1525    Pivot = 0,
1526    Stringify = 1,
1527    StringifyFormatted = 2,
1528}
1529impl MapFlatten {
1530    /// String value of the enum field names used in the ProtoBuf definition.
1531    ///
1532    /// The values are not transformed in any way and thus are considered stable
1533    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1534    pub fn as_str_name(&self) -> &'static str {
1535        match self {
1536            MapFlatten::Pivot => "MAP_FLATTEN_PIVOT",
1537            MapFlatten::Stringify => "MAP_FLATTEN_STRINGIFY",
1538            MapFlatten::StringifyFormatted => "MAP_FLATTEN_STRINGIFY_FORMATTED",
1539        }
1540    }
1541    /// Creates an enum from field names used in the ProtoBuf definition.
1542    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1543        match value {
1544            "MAP_FLATTEN_PIVOT" => Some(Self::Pivot),
1545            "MAP_FLATTEN_STRINGIFY" => Some(Self::Stringify),
1546            "MAP_FLATTEN_STRINGIFY_FORMATTED" => Some(Self::StringifyFormatted),
1547            _ => None,
1548        }
1549    }
1550}
1551#[derive(serde::Deserialize, ts_rs::TS)]
1552#[serde(rename_all = "snake_case")]
1553#[derive(serde::Serialize)]
1554#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1555#[repr(i32)]
1556pub enum JoinType {
1557    Inner = 0,
1558    Left = 1,
1559    Outer = 2,
1560}
1561impl JoinType {
1562    /// String value of the enum field names used in the ProtoBuf definition.
1563    ///
1564    /// The values are not transformed in any way and thus are considered stable
1565    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1566    pub fn as_str_name(&self) -> &'static str {
1567        match self {
1568            JoinType::Inner => "INNER",
1569            JoinType::Left => "LEFT",
1570            JoinType::Outer => "OUTER",
1571        }
1572    }
1573    /// Creates an enum from field names used in the ProtoBuf definition.
1574    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1575        match value {
1576            "INNER" => Some(Self::Inner),
1577            "LEFT" => Some(Self::Left),
1578            "OUTER" => Some(Self::Outer),
1579            _ => None,
1580        }
1581    }
1582}