Introduce a lowerEq operator to the query builder

This commit is contained in:
Eike Kettner 2021-01-17 20:10:00 +01:00
parent 0be89687dc
commit 623a61dbb6
3 changed files with 12 additions and 0 deletions

View File

@ -164,6 +164,9 @@ trait DSL extends DoobieMeta {
def ===(value: A)(implicit P: Put[A]): Condition = def ===(value: A)(implicit P: Put[A]): Condition =
Condition.CompareVal(col, Operator.Eq, value) Condition.CompareVal(col, Operator.Eq, value)
def lowerEq(value: A)(implicit P: Put[A]): Condition =
Condition.CompareVal(col, Operator.LowerEq, value)
def ====(value: String): Condition = def ====(value: String): Condition =
Condition.CompareVal(col.asInstanceOf[Column[String]], Operator.Eq, value) Condition.CompareVal(col.asInstanceOf[Column[String]], Operator.Eq, value)

View File

@ -5,6 +5,7 @@ sealed trait Operator
object Operator { object Operator {
case object Eq extends Operator case object Eq extends Operator
case object LowerEq extends Operator
case object Neq extends Operator case object Neq extends Operator
case object Gt extends Operator case object Gt extends Operator
case object Lt extends Operator case object Lt extends Operator

View File

@ -69,6 +69,8 @@ object ConditionBuilder {
val colFrag = op match { val colFrag = op match {
case Operator.LowerLike => case Operator.LowerLike =>
lower(col) lower(col)
case Operator.LowerEq =>
lower(col)
case _ => case _ =>
SelectExprBuilder.column(col) SelectExprBuilder.column(col)
} }
@ -80,6 +82,8 @@ object ConditionBuilder {
val dbfFrag = op match { val dbfFrag = op match {
case Operator.LowerLike => case Operator.LowerLike =>
lower(dbf) lower(dbf)
case Operator.LowerEq =>
lower(dbf)
case _ => case _ =>
DBFunctionBuilder.build(dbf) DBFunctionBuilder.build(dbf)
} }
@ -89,6 +93,8 @@ object ConditionBuilder {
val (c1Frag, c2Frag) = op match { val (c1Frag, c2Frag) = op match {
case Operator.LowerLike => case Operator.LowerLike =>
(lower(c1), lower(c2)) (lower(c1), lower(c2))
case Operator.LowerEq =>
(lower(c1), lower(c2))
case _ => case _ =>
(SelectExprBuilder.column(c1), SelectExprBuilder.column(c2)) (SelectExprBuilder.column(c1), SelectExprBuilder.column(c2))
} }
@ -131,6 +137,8 @@ object ConditionBuilder {
op match { op match {
case Operator.Eq => case Operator.Eq =>
fr" =" fr" ="
case Operator.LowerEq =>
fr" ="
case Operator.Neq => case Operator.Neq =>
fr" <>" fr" <>"
case Operator.Gt => case Operator.Gt =>