gitql_ast/
query.rs

1use std::collections::HashMap;
2
3use crate::expression::Expr;
4use crate::statement::Statement;
5
6pub enum Query {
7    Select(SelectQuery),
8    GlobalVariableDecl(GlobalVariableDeclQuery),
9    Do(DoQuery),
10    DescribeTable(DescribeQuery),
11    ShowTables,
12}
13
14pub struct SelectQuery {
15    pub statements: HashMap<&'static str, Box<dyn Statement>>,
16    pub alias_table: HashMap<String, String>,
17    pub has_aggregation_function: bool,
18    pub has_group_by_statement: bool,
19    pub hidden_selections: HashMap<String, Vec<String>>,
20}
21
22pub struct DoQuery {
23    pub exprs: Vec<Box<dyn Expr>>,
24}
25
26pub struct DescribeQuery {
27    pub table_name: String,
28}
29
30pub struct GlobalVariableDeclQuery {
31    pub name: String,
32    pub value: Box<dyn Expr>,
33}