All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.scalaquery.simple.StaticQuery.scala Maven / Gradle / Ivy

package org.scalaquery.simple

import java.sql.PreparedStatement
import java.sql.{Date, Time, Timestamp}
import org.scalaquery.{StatementInvoker, UnitInvokerMixin, SQueryException}
import org.scalaquery.session.{PositionedParameters, PositionedResult}

/**
 * Invoker for static queries, i.e. queries with a fixed query string.
 * They may still contain bind variables to be supplied at the call site.
 * The companion object contains utility methods for building static queries.
 */
class StaticQuery[-P,+R](query: String, rconv: GetResult[R], pconv: SetParameter[P])
extends StatementInvoker[P,R] {
  protected def getStatement = query
  protected def setParam(param: P, st: PreparedStatement) = pconv(param, new PositionedParameters(st))
  protected def extractValue(rs: PositionedResult): R = rconv(rs)
}

object StaticQuery {

  def query[P,R](query: String)(implicit rconv: GetResult[R], pconv: SetParameter[P]) =
    new StaticQuery[P, R](query, rconv, pconv)

  def queryNA[R](query: String)(implicit conv: GetResult[R]) =
    new StaticQuery[Unit, R](query, conv, SetParameter.SetUnit) with UnitInvokerMixin[R]

  def update[P](query: String)(implicit pconv: SetParameter[P]) =
    new StaticQuery[P, Int](query, GetResult.GetUpdateValue, pconv)

  def updateNA(query: String) =
    new StaticQuery[Unit, Int](query, GetResult.GetUpdateValue, SetParameter.SetUnit) with UnitInvokerMixin[Int]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy