use crate::{
db::predicate::{coercion::CoercionSpec, model::CompareOp},
value::Value,
};
#[derive(Clone, Debug, Eq, PartialEq)]
pub(in crate::db) struct ExecutableComparePredicate {
pub(in crate::db) field_slot: Option<usize>,
pub(in crate::db) op: CompareOp,
pub(in crate::db) value: Value,
pub(in crate::db) coercion: CoercionSpec,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub(in crate::db) enum ExecutablePredicate {
True,
False,
And(Vec<Self>),
Or(Vec<Self>),
Not(Box<Self>),
Compare(ExecutableComparePredicate),
IsNull {
field_slot: Option<usize>,
},
IsNotNull {
field_slot: Option<usize>,
},
IsMissing {
field_slot: Option<usize>,
},
IsEmpty {
field_slot: Option<usize>,
},
IsNotEmpty {
field_slot: Option<usize>,
},
TextContains {
field_slot: Option<usize>,
value: Value,
},
TextContainsCi {
field_slot: Option<usize>,
value: Value,
},
}