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}