From 5d4b85d9991abe63920e4f4d0e2cad6e6aa09f33 Mon Sep 17 00:00:00 2001 From: vlad Date: Tue, 24 Oct 2017 03:25:48 -0700 Subject: Fixing dimensions table name in QueryBuilder and empty IN handling --- .../driver/pdsuicommon/db/SlickQueryBuilder.scala | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/main/scala/xyz/driver/pdsuicommon') diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala index c561d6d..3011f6a 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala @@ -173,7 +173,7 @@ sealed trait SlickQueryBuilderParameters { def isNull(string: AnyRef) = Option(string).isEmpty || string.toString.toLowerCase == "null" def escapeDimension(dimension: SearchFilterExpr.Dimension) = { - s"$escapedTableName.$qs${dimension.name}$qs" + s"${dimension.tableName.map(t => s"$qs$databaseName$qs.$qs$t$qs").getOrElse(escapedTableName)}.$qs${dimension.name}$qs" } def filterToSqlMultiple(operands: Seq[SearchFilterExpr]) = operands.collect { @@ -187,9 +187,9 @@ sealed trait SlickQueryBuilderParameters { if (conditions.nonEmpty) { val condition = conditions.head if (first) { - multipleSqlToAction(false, op, conditions.tail, condition) + multipleSqlToAction(first = false, op, conditions.tail, condition) } else { - multipleSqlToAction(false, op, conditions.tail, sql concat sql" #${op} " concat condition) + multipleSqlToAction(first = false, op, conditions.tail, sql concat sql" #${op} " concat condition) } } else sql } @@ -197,9 +197,9 @@ sealed trait SlickQueryBuilderParameters { def concatenateParameters(sql: SQLActionBuilder, first: Boolean, tail: Seq[AnyRef]): SQLActionBuilder = { if (tail.nonEmpty) { if (!first) { - concatenateParameters(sql concat sql""",${tail.head}""", false, tail.tail) + concatenateParameters(sql concat sql""",${tail.head}""", first = false, tail.tail) } else { - concatenateParameters(sql"""(${tail.head}""", false, tail.tail) + concatenateParameters(sql"""(${tail.head}""", first = false, tail.tail) } } else sql concat sql")" } @@ -245,17 +245,19 @@ sealed trait SlickQueryBuilderParameters { case SearchFilterNAryOperation.NotIn => sql" not in " } - val formattedValues = if (values.nonEmpty) { - concatenateParameters(sql"", true, values) - } else sql"NULL" - sql"#${escapeDimension(dimension)}" concat sqlOp concat formattedValues + if (values.nonEmpty) { + val formattedValues = concatenateParameters(sql"", first = true, values) + sql"#${escapeDimension(dimension)}" concat sqlOp concat formattedValues + } else { + sql"1=0" + } case Intersection(operands) => - val filter = multipleSqlToAction(true, "and", filterToSqlMultiple(operands), sql"") + val filter = multipleSqlToAction(first = true, "and", filterToSqlMultiple(operands), sql"") sql"(" concat filter concat sql")" case Union(operands) => - val filter = multipleSqlToAction(true, "or", filterToSqlMultiple(operands), sql"") + val filter = multipleSqlToAction(first = true, "or", filterToSqlMultiple(operands), sql"") sql"(" concat filter concat sql")" } } -- cgit v1.2.3