gluesql_core/data/
table.rs

1use {
2    crate::ast::{IndexItem, TableAlias, TableFactor},
3    serde::Serialize,
4    std::fmt::Debug,
5    thiserror::Error,
6};
7
8#[derive(Error, Serialize, Debug, PartialEq, Eq)]
9pub enum TableError {
10    #[error("unreachable")]
11    Unreachable,
12}
13
14pub fn get_alias(table_factor: &TableFactor) -> &String {
15    match table_factor {
16        TableFactor::Table {
17            name, alias: None, ..
18        }
19        | TableFactor::Table {
20            alias: Some(TableAlias { name, .. }),
21            ..
22        }
23        | TableFactor::Derived {
24            alias: TableAlias { name, .. },
25            ..
26        }
27        | TableFactor::Series {
28            alias: TableAlias { name, .. },
29            ..
30        }
31        | TableFactor::Dictionary {
32            alias: TableAlias { name, .. },
33            ..
34        } => name,
35    }
36}
37
38pub fn get_index(table_factor: &TableFactor) -> Option<&IndexItem> {
39    match table_factor {
40        TableFactor::Table { index, .. } => index.as_ref(),
41        TableFactor::Derived { .. }
42        | TableFactor::Series { .. }
43        | TableFactor::Dictionary { .. } => None,
44    }
45}