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 Tsql,
35}
36
37pub fn dialect_readout() -> Vec<String> {
39 DialectKind::iter()
40 .map(|x| x.as_ref().to_string())
41 .collect()
42}
43
44#[cfg(test)]
45mod tests {
46 #[test]
47 fn dialect_readout_is_alphabetically_sorted() {
48 let readout = super::dialect_readout();
49
50 let mut sorted = readout.clone();
51 sorted.sort();
52
53 assert_eq!(readout, sorted);
54 }
55}