aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-05 17:44:17 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-05 19:17:09 +0700
commit96a9bdde5c96e2f743f835fd8996fd765c13bf40 (patch)
treef00144ab2c1c91a301611e9d718364e9a05fc4ea /src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala
parent1b04669effd79324e52f0dcba0f3714d4a2a957c (diff)
downloadrest-query-96a9bdde5c96e2f743f835fd8996fd765c13bf40.tar.gz
rest-query-96a9bdde5c96e2f743f835fd8996fd765c13bf40.tar.bz2
rest-query-96a9bdde5c96e2f743f835fd8996fd765c13bf40.zip
Added implicit set parameter object for slick query builder
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala
index 0daa84d..8f42949 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala
@@ -1,6 +1,6 @@
package xyz.driver.pdsuicommon.db
-import java.sql.PreparedStatement
+import java.sql.{JDBCType, PreparedStatement}
import java.time.LocalDateTime
import slick.jdbc.{JdbcProfile, PositionedParameters, SQLActionBuilder, SetParameter}
@@ -38,6 +38,20 @@ object SlickQueryBuilder {
})
}
}
+
+ implicit object SetQueryParameter extends SetParameter[AnyRef] {
+ def apply(v: AnyRef, pp: PositionedParameters) = {
+ pp.setObject(v, JDBCType.BINARY.getVendorTypeNumber)
+ }
+ }
+
+ implicit object SetListQueryParameter extends SetParameter[Seq[AnyRef]] {
+ def apply(vList: Seq[AnyRef], pp: PositionedParameters) = {
+ vList.foreach { v =>
+ pp.setObject(v, JDBCType.BINARY.getVendorTypeNumber)
+ }
+ }
+ }
}
final case class SlickTableLink(keyColumnName: String, foreignTableName: String, foreignKeyColumnName: String)
@@ -196,7 +210,7 @@ sealed trait SlickQueryBuilderParameters {
// So, to handle NotEq for nullable fields we need to use more complex SQL expression.
// http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html
val escapedColumn = escapeDimension(dimension)
- sql"(#${escapedColumn} is null or #${escapedColumn} != ${value.toString})"
+ sql"(#${escapedColumn} is null or #${escapedColumn} != $value)"
case Atom.Binary(dimension, op, value) =>
val operator = op match {
@@ -208,7 +222,7 @@ sealed trait SlickQueryBuilderParameters {
case Lt => sql"<"
case LtEq => sql"<="
}
- sql"#${escapeDimension(dimension)}" concat operator concat sql"""${value.toString}"""
+ sql"#${escapeDimension(dimension)}" concat operator concat sql"""$value"""
case Atom.NAry(dimension, op, values) =>
val sqlOp = op match {
@@ -217,7 +231,7 @@ sealed trait SlickQueryBuilderParameters {
}
val formattedValues = if (values.nonEmpty) {
- val condition = s"(${values.map(v => "'" + v.toString + "'").mkString(",")})"
+ val condition = s"(${values})"
sql"#${condition}"
} else sql"NULL"
sql"#${escapeDimension(dimension)}" concat sqlOp concat formattedValues