use crate::query::ir::CmpOp;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OpKind {
And,
Or,
Not,
Cmp(CmpOp),
In,
StartsWith,
EndsWith,
Missing,
Some,
All,
None,
}
pub fn classify(op: &str) -> Option<OpKind> {
Some(match op {
"and" => OpKind::And,
"or" => OpKind::Or,
"!" => OpKind::Not,
"==" | "===" => OpKind::Cmp(CmpOp::Eq),
"!=" | "!==" => OpKind::Cmp(CmpOp::Ne),
"<" => OpKind::Cmp(CmpOp::Lt),
"<=" => OpKind::Cmp(CmpOp::Le),
">" => OpKind::Cmp(CmpOp::Gt),
">=" => OpKind::Cmp(CmpOp::Ge),
"in" => OpKind::In,
"starts_with" => OpKind::StartsWith,
"ends_with" => OpKind::EndsWith,
"missing" => OpKind::Missing,
"some" => OpKind::Some,
"all" => OpKind::All,
"none" => OpKind::None,
_ => return None,
})
}