use crate::value::Value;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Op {
Eq,
Ne,
Lt,
Le,
Gt,
Ge,
Like,
In,
IsNull,
IsNotNull,
}
#[derive(Debug, Clone)]
pub struct Filter {
pub(crate) column: String,
pub(crate) op: Op,
pub(crate) values: Vec<Value>,
}
impl Filter {
pub fn new(column: impl Into<String>, op: Op, value: impl Into<Value>) -> Self {
Self {
column: column.into(),
op,
values: vec![value.into()],
}
}
pub fn in_list(column: impl Into<String>, values: Vec<Value>) -> Self {
Self {
column: column.into(),
op: Op::In,
values,
}
}
pub fn is_null(column: impl Into<String>) -> Self {
Self {
column: column.into(),
op: Op::IsNull,
values: vec![],
}
}
pub fn is_not_null(column: impl Into<String>) -> Self {
Self {
column: column.into(),
op: Op::IsNotNull,
values: vec![],
}
}
}