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