aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-10-24 03:25:48 -0700
committervlad <vlad@driver.xyz>2017-10-24 03:25:48 -0700
commit5d4b85d9991abe63920e4f4d0e2cad6e6aa09f33 (patch)
treec58f808439be222d83fddde2860040ca84c1f772 /src
parentc652553ca640f710f0182d9f51b3b87c954e24ac (diff)
downloadrest-query-5d4b85d9991abe63920e4f4d0e2cad6e6aa09f33.tar.gz
rest-query-5d4b85d9991abe63920e4f4d0e2cad6e6aa09f33.tar.bz2
rest-query-5d4b85d9991abe63920e4f4d0e2cad6e6aa09f33.zip
Fixing dimensions table name in QueryBuilder and empty IN handlingv0.10.8
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala24
1 files changed, 13 insertions, 11 deletions
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")"
}
}