sqruff_lib_core/dialects/
init.rs1use 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
36pub 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}