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

com.lucidchart.open.relate.Query.scala Maven / Gradle / Ivy

The newest version!
package com.lucidchart.open.relate

import java.sql.{Date => SqlDate, PreparedStatement, Statement, Timestamp, Types}
import java.math.{BigDecimal => JBigDecimal, BigInteger => JBigInt}
import java.util.{Date, UUID}
import scala.reflect.ClassTag

/** 
 * Provide implicit method calls for syntactic sugar
 *
 * These functions should be used in the [[com.lucidchart.open.relate.Sql#on on]] and [[com.lucidchart.open.relate.Expandable#expand expand]] methods.
 * {{{
 * import com.lucidchart.open.relate._
 * import com.lucidchart.open.relate.Query._
 * 
 * SQL("SELECT * FROM users WHERE id={id}").on { implicit query =>
 *  long("id", 1L)
 * }
 *
 * }}}
 *
 * See the Relate Wiki for more information.
 */
object Query {
  def commaSeparated(name: String, count: Int)(implicit e: Expandable) = e.commaSeparated(name, count)
  def tupled(name: String, columns: Seq[String], count: Int)(implicit e: Expandable) = e.tupled(name, columns, count)
  def bigDecimal(name: String, value: BigDecimal)(implicit stmt: SqlStatement) = stmt.bigDecimal(name, value)
  def bigDecimal(name: String, value: JBigDecimal)(implicit stmt: SqlStatement) = stmt.bigDecimal(name, value)
  def bigInt(name: String, value: BigInt)(implicit stmt: SqlStatement) = stmt.bigInt(name, value)
  def bigInt(name: String, value: JBigInt)(implicit stmt: SqlStatement) = stmt.bigInt(name, value)
  def bool(name: String, value: Boolean)(implicit stmt: SqlStatement) = stmt.bool(name, value)
  def byte(name: String, value: Byte)(implicit stmt: SqlStatement) = stmt.byte(name, value)
  def byteArray(name: String, value: Array[Byte])(implicit stmt: SqlStatement) = stmt.byteArray(name, value)
  def char(name: String, value: Char)(implicit stmt: SqlStatement) = stmt.char(name, value)
  def date(name: String, value: Date)(implicit stmt: SqlStatement) = stmt.date(name, value)
  def double(name: String, value: Double)(implicit stmt: SqlStatement) = stmt.double(name, value)
  def float(name: String, value: Float)(implicit stmt: SqlStatement) = stmt.float(name, value)
  def int(name: String, value: Int)(implicit stmt: SqlStatement) = stmt.int(name, value)
  def long(name: String, value: Long)(implicit stmt: SqlStatement) = stmt.long(name, value)
  def short(name: String, value: Short)(implicit stmt: SqlStatement) = stmt.short(name, value)
  def string(name: String, value: String)(implicit stmt: SqlStatement) = stmt.string(name, value)
  def timestamp(name: String, value: Timestamp)(implicit stmt: SqlStatement) = stmt.timestamp(name, value)
  def uuid(name: String, value: UUID)(implicit stmt: SqlStatement) = stmt.uuid(name, value)

  // list version
  def bigDecimals(name: String, values: TraversableOnce[BigDecimal])(implicit stmt: SqlStatement) = stmt.bigDecimals(name, values)
  def bigDecimals[X: ClassTag](name: String, values: TraversableOnce[JBigDecimal])(implicit stmt: SqlStatement) = stmt.bigDecimals(name, values)
  def bigInts(name: String, values: TraversableOnce[BigInt])(implicit stmt: SqlStatement) = stmt.bigInts(name, values)
  def bigInts[X: ClassTag](name: String, values: TraversableOnce[JBigInt])(implicit stmt: SqlStatement) = stmt.bigInts(name, values)
  def bools(name: String, values: TraversableOnce[Boolean])(implicit stmt: SqlStatement) = stmt.bools(name, values)
  def bytes(name: String, values: TraversableOnce[Byte])(implicit stmt: SqlStatement) = stmt.bytes(name, values)
  def chars(name: String, values: TraversableOnce[Char])(implicit stmt: SqlStatement) = stmt.chars(name, values)
  def dates(name: String, values: TraversableOnce[Date])(implicit stmt: SqlStatement) = stmt.dates(name, values)
  def doubles(name: String, values: TraversableOnce[Double])(implicit stmt: SqlStatement) = stmt.doubles(name, values)
  def floats(name: String, values: TraversableOnce[Float])(implicit stmt: SqlStatement) = stmt.floats(name, values)
  def ints(name: String, values: TraversableOnce[Int])(implicit stmt: SqlStatement) = stmt.ints(name, values)
  def longs(name: String, values: TraversableOnce[Long])(implicit stmt: SqlStatement) = stmt.longs(name, values)
  def shorts(name: String, values: TraversableOnce[Short])(implicit stmt: SqlStatement) = stmt.shorts(name, values)
  def strings(name: String, values: TraversableOnce[String])(implicit stmt: SqlStatement) = stmt.strings(name, values)
  def timestamps(name: String, values: TraversableOnce[Timestamp])(implicit stmt: SqlStatement) = stmt.timestamps(name, values)
  def uuids(name: String, values: TraversableOnce[UUID])(implicit stmt: SqlStatement) = stmt.uuids(name, values)

  def bigDecimalOption[A](name: String, value: Option[A])(implicit stmt: SqlStatement, bd: BigDecimalLike[A]) = stmt.bigDecimalOption(name, value)
  def bigIntOption[A](name: String, value: Option[A])(implicit stmt: SqlStatement, bi: BigIntLike[A]) = stmt.bigIntOption(name, value)
  def boolOption[A](name: String, value: Option[Boolean])(implicit stmt: SqlStatement) = stmt.boolOption(name, value)
  def byteOption(name: String, value: Option[Byte])(implicit stmt: SqlStatement) = stmt.byteOption(name, value)
  def byteArrayOption(name: String, value: Option[Array[Byte]])(implicit stmt: SqlStatement) = stmt.byteArrayOption(name, value)
  def charOption(name: String, value: Option[Char])(implicit stmt: SqlStatement) = stmt.charOption(name, value)
  def dateOption(name: String, value: Option[Date])(implicit stmt: SqlStatement) = stmt.dateOption(name, value)
  def doubleOption(name: String, value: Option[Double])(implicit stmt: SqlStatement) = stmt.doubleOption(name, value)
  def floatOption(name: String, value: Option[Float])(implicit stmt: SqlStatement) = stmt.floatOption(name, value)
  def intOption(name: String, value: Option[Int])(implicit stmt: SqlStatement) = stmt.intOption(name, value)
  def longOption(name: String, value: Option[Long])(implicit stmt: SqlStatement) = stmt.longOption(name, value)
  def shortOption(name: String, value: Option[Short])(implicit stmt: SqlStatement) = stmt.shortOption(name, value)
  def stringOption(name: String, value: Option[String])(implicit stmt: SqlStatement) = stmt.stringOption(name, value)
  def timestampOption(name: String, value: Option[Timestamp])(implicit stmt: SqlStatement) = stmt.timestampOption(name, value)
  def uuidOption(name: String, value: Option[UUID])(implicit stmt: SqlStatement) = stmt.uuidOption(name, value)

  trait BigDecimalLike[A] {
    def get(value: A): JBigDecimal
  }

  implicit object BigDecimalWrap extends BigDecimalLike[BigDecimal] {
    def get(value: BigDecimal): JBigDecimal = value.bigDecimal
  }

  implicit object JBigDecimalWrap extends BigDecimalLike[JBigDecimal] {
    def get(value: JBigDecimal): JBigDecimal = value
  }

  trait BigIntLike[A] {
    def get(value: A): JBigInt
  }

  implicit object BigIntWrap extends BigIntLike[BigInt] {
    def get(value: BigInt): JBigInt = value.bigInteger
  }

  implicit object JBigIntWrap extends BigIntLike[JBigInt] {
    def get(value: JBigInt): JBigInt = value
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy