diff --git a/.gitignore b/.gitignore index bf45ef5..b65e968 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ Relate.sublime-workspace .history .idea* lib_managed/* +.DS_Store #built files target/* diff --git a/src/main/scala/com/lucidchart/open/relate/interp/InterpolatedQuery.scala b/src/main/scala/com/lucidchart/open/relate/interp/InterpolatedQuery.scala index 477d952..6d25d74 100644 --- a/src/main/scala/com/lucidchart/open/relate/interp/InterpolatedQuery.scala +++ b/src/main/scala/com/lucidchart/open/relate/interp/InterpolatedQuery.scala @@ -3,6 +3,8 @@ package com.lucidchart.open.relate.interp import com.lucidchart.open.relate.Sql import java.sql.PreparedStatement +import scala.collection.mutable.ListBuffer + class InterpolatedQuery(protected val parsedQuery: String, protected val params: Seq[Parameter]) extends Sql with MultipleParameter { def +(query: InterpolatedQuery) = new InterpolatedQuery(parsedQuery + query.parsedQuery, params ++ query.params) @@ -17,12 +19,20 @@ object InterpolatedQuery { def fromParts(parts: Seq[String], params: Seq[Parameter]) = { val stringBuilder = new StringBuilder() + val listBuf = new ListBuffer[Parameter]() + parts.zip(params).foreach { case (part, param) => - stringBuilder ++= part - param.appendPlaceholders(stringBuilder) + if (part.length > 0 && part.takeRight(1) == "#") { + stringBuilder ++= part.dropRight(1) + stringBuilder ++= param.toString + } else { + stringBuilder ++= part + param.appendPlaceholders(stringBuilder) + listBuf += param + } } stringBuilder ++= parts.last - new InterpolatedQuery(stringBuilder.toString(), params) + new InterpolatedQuery(stringBuilder.toString(), listBuf) } } diff --git a/src/main/scala/com/lucidchart/open/relate/interp/Parameters.scala b/src/main/scala/com/lucidchart/open/relate/interp/Parameters.scala index b7e50c5..705e7a4 100644 --- a/src/main/scala/com/lucidchart/open/relate/interp/Parameters.scala +++ b/src/main/scala/com/lucidchart/open/relate/interp/Parameters.scala @@ -260,6 +260,7 @@ class SqlXmlParameter(value: SQLXML) extends SingleParameter { class StringParameter(value: String) extends SingleParameter { protected def set(statement: PreparedStatement, i: Int) = statement.setString(i, value) + override def toString(): String = value } class TimeParameter(value: Time) extends SingleParameter {