use crate::condition::MysqlCondition;
use crate::define_sql_operation;
define_sql_operation!(
MysqlOperation,
MysqlCondition,
crate::mysql::types::AnyMysqlType
);
use vantage_expressions::{Expression, Expressive, ExpressiveEnum};
use super::types::AnyMysqlType;
type Expr = Expression<AnyMysqlType>;
pub trait MysqlExt: Expressive<AnyMysqlType> {
fn regexp(&self, pattern: impl Expressive<AnyMysqlType>) -> Expr {
Expression::new(
"{} REGEXP {}",
vec![
ExpressiveEnum::Nested(self.expr()),
ExpressiveEnum::Nested(pattern.expr()),
],
)
}
fn bitand(&self, other: impl Expressive<AnyMysqlType>) -> Expr {
Expression::new(
"{} & {}",
vec![
ExpressiveEnum::Nested(self.expr()),
ExpressiveEnum::Nested(other.expr()),
],
)
}
fn bitor(&self, other: impl Expressive<AnyMysqlType>) -> Expr {
Expression::new(
"{} | {}",
vec![
ExpressiveEnum::Nested(self.expr()),
ExpressiveEnum::Nested(other.expr()),
],
)
}
}
impl<T: Expressive<AnyMysqlType>> MysqlExt for T {}