partiql/sql/
where_cond.rs1use crate::sql::field::Field;
2use crate::sql::Expr;
3use crate::sql::Selector;
4use crate::value::PqlValue;
5
6#[derive(Debug, Clone, PartialEq)]
7pub enum WhereCond {
8 Eq { expr: Expr, right: PqlValue },
9 Like { expr: Expr, right: String },
10}
11
12impl Default for WhereCond {
13 fn default() -> Self {
14 Self::Eq {
15 expr: Expr::default(),
16 right: PqlValue::default(),
17 }
18 }
19}
20
21impl WhereCond {
22 pub fn get_expr(&self) -> Expr {
23 match &self {
24 Self::Eq { expr, right: _ } => expr.to_owned(),
25 Self::Like { expr, right: _ } => expr.to_owned(),
26 }
27 }
28}
29
30pub fn re_from_str(pattern: &str) -> regex::Regex {
31 let regex_pattern = match (pattern.starts_with("%"), pattern.ends_with("%")) {
32 (true, true) => {
33 format!("{}", pattern.trim_start_matches("%").trim_end_matches("%"))
34 }
35 (true, false) => format!("{}$", pattern.trim_start_matches("%")),
36 (false, true) => format!("^{}", pattern.trim_end_matches("%")),
37 (false, false) => format!("^{}$", pattern),
38 };
39 let re = regex::Regex::new(®ex_pattern).unwrap();
40 re
41}