1use oak_core::{Language, LanguageCategory};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub struct SqlLanguage {
6 pub case_sensitive: bool,
8 pub quoted_identifiers: bool,
10 pub backtick_identifiers: bool,
12 pub bracket_identifiers: bool,
14}
15
16impl SqlLanguage {
17 pub fn standard() -> Self {
19 Self::default()
20 }
21
22 pub fn mysql() -> Self {
24 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: true, bracket_identifiers: false }
25 }
26
27 pub fn postgresql() -> Self {
29 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: false }
30 }
31
32 pub fn sqlserver() -> Self {
34 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: true }
35 }
36}
37
38impl Default for SqlLanguage {
39 fn default() -> Self {
40 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: false }
41 }
42}
43
44impl Language for SqlLanguage {
45 const NAME: &'static str = "sql";
46 const CATEGORY: LanguageCategory = LanguageCategory::Dsl;
47
48 type TokenType = crate::kind::SqlSyntaxKind;
49 type ElementType = crate::kind::SqlSyntaxKind;
50 type TypedRoot = ();
51}