gluesql_core/data/
table.rs1use {
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}