1use oak_core::{Language, LanguageCategory};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
6pub struct SqlLanguage {
7 pub case_sensitive: bool,
9 pub quoted_identifiers: bool,
11 pub backtick_identifiers: bool,
13 pub bracket_identifiers: bool,
15}
16
17impl SqlLanguage {
18 pub fn new() -> Self {
20 Self::default()
21 }
22
23 pub fn standard() -> Self {
25 Self::default()
26 }
27
28 pub fn mysql() -> Self {
30 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: true, bracket_identifiers: false }
31 }
32
33 pub fn postgresql() -> Self {
35 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: false }
36 }
37
38 pub fn sqlserver() -> Self {
40 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: true }
41 }
42}
43
44impl Default for SqlLanguage {
45 fn default() -> Self {
46 Self { case_sensitive: false, quoted_identifiers: true, backtick_identifiers: false, bracket_identifiers: false }
47 }
48}
49
50impl Language for SqlLanguage {
51 const NAME: &'static str = "sql";
52 const CATEGORY: LanguageCategory = LanguageCategory::Dsl;
53
54 type TokenType = crate::kind::SqlSyntaxKind;
55 type ElementType = crate::kind::SqlSyntaxKind;
56 type TypedRoot = ();
57}