sqruff_lib_core/dialects/
init.rs

1use strum::IntoEnumIterator;
2use strum_macros::AsRefStr;
3
4#[derive(
5    strum_macros::EnumString,
6    strum_macros::EnumIter,
7    AsRefStr,
8    Debug,
9    Clone,
10    Copy,
11    Default,
12    Ord,
13    PartialOrd,
14    Eq,
15    PartialEq,
16    Hash,
17)]
18#[strum(serialize_all = "snake_case")]
19pub enum DialectKind {
20    #[default]
21    Ansi,
22    Athena,
23    Bigquery,
24    Clickhouse,
25    Databricks,
26    Duckdb,
27    Mysql,
28    Postgres,
29    Redshift,
30    Snowflake,
31    Sparksql,
32    Sqlite,
33    Trino,
34}
35
36/// Generate a readout of available dialects.
37pub fn dialect_readout() -> Vec<String> {
38    DialectKind::iter()
39        .map(|x| x.as_ref().to_string())
40        .collect()
41}
42
43#[cfg(test)]
44mod tests {
45    #[test]
46    fn dialect_readout_is_alphabetically_sorted() {
47        let readout = super::dialect_readout();
48
49        let mut sorted = readout.clone();
50        sorted.sort();
51
52        assert_eq!(readout, sorted);
53    }
54}