polyglot_sql/dialects/
solr.rs1use super::{DialectImpl, DialectType};
14use crate::error::Result;
15use crate::expressions::{BinaryOp, Expression};
16#[cfg(feature = "generate")]
17use crate::generator::GeneratorConfig;
18use crate::tokens::TokenizerConfig;
19
20pub struct SolrDialect;
22
23impl DialectImpl for SolrDialect {
24 fn dialect_type(&self) -> DialectType {
25 DialectType::Solr
26 }
27
28 fn tokenizer_config(&self) -> TokenizerConfig {
29 let mut config = TokenizerConfig::default();
30 config.identifiers.insert('`', '`');
32 config
35 }
36
37 #[cfg(feature = "generate")]
38
39 fn generator_config(&self) -> GeneratorConfig {
40 use crate::generator::IdentifierQuoteStyle;
41 GeneratorConfig {
42 identifier_quote: '`',
43 identifier_quote_style: IdentifierQuoteStyle::BACKTICK,
44 dialect: Some(DialectType::Solr),
45 ..Default::default()
46 }
47 }
48
49 #[cfg(feature = "transpile")]
50
51 fn transform_expr(&self, expr: Expression) -> Result<Expression> {
52 match expr {
55 Expression::DPipe(dpipe) => {
56 let left = self.transform_expr(*dpipe.this)?;
58 let right = self.transform_expr(*dpipe.expression)?;
59 Ok(Expression::Or(Box::new(BinaryOp::new(left, right))))
60 }
61 _ => Ok(expr),
62 }
63 }
64}