nodedb_query/window/
spec.rs1use crate::expr::SqlExpr;
6
7#[derive(
9 Debug,
10 Clone,
11 serde::Serialize,
12 serde::Deserialize,
13 zerompk::ToMessagePack,
14 zerompk::FromMessagePack,
15)]
16pub struct WindowFuncSpec {
17 pub alias: String,
19 pub func_name: String,
23 pub args: Vec<SqlExpr>,
25 pub partition_by: Vec<String>,
27 pub order_by: Vec<(String, bool)>,
29 pub frame: WindowFrame,
31}
32
33#[derive(
35 Debug,
36 Clone,
37 serde::Serialize,
38 serde::Deserialize,
39 zerompk::ToMessagePack,
40 zerompk::FromMessagePack,
41)]
42pub struct WindowFrame {
43 pub mode: String,
45 pub start: FrameBound,
47 pub end: FrameBound,
49}
50
51impl Default for WindowFrame {
52 fn default() -> Self {
53 Self {
54 mode: "range".into(),
55 start: FrameBound::UnboundedPreceding,
56 end: FrameBound::CurrentRow,
57 }
58 }
59}
60
61#[derive(
63 Debug,
64 Clone,
65 serde::Serialize,
66 serde::Deserialize,
67 zerompk::ToMessagePack,
68 zerompk::FromMessagePack,
69)]
70pub enum FrameBound {
71 UnboundedPreceding,
72 Preceding(u64),
73 CurrentRow,
74 Following(u64),
75 UnboundedFollowing,
76}