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

calasql-operations_3.0.1.6.source-code.ExprOps.scala Maven / Gradle / Ivy

package scalasql.operations

import scalasql.core.TypeMapper
import scalasql.core.Expr
import scalasql.core.SqlStr
import scalasql.core.SqlStr.SqlStringSyntax

class ExprOps(v: Expr[?]) {

  /**
   * SQL-style Equals to, translates to SQL `=`. Returns `false` if both values are `NULL`
   */
  def `=`[T](x: Expr[T]): Expr[Boolean] = Expr { implicit ctx => sql"($v = $x)" }

  /**
   * SQL-style Not equals to, translates to SQL `<>`. Returns `false` if both values are `NULL`
   */
  def <>[T](x: Expr[T]): Expr[Boolean] = Expr { implicit ctx => sql"($v <> $x)" }

  /** Greater than */
  def >[V](x: Expr[V]): Expr[Boolean] = Expr { implicit ctx => sql"($v > $x)" }

  /** Less than */
  def <[V](x: Expr[V]): Expr[Boolean] = Expr { implicit ctx => sql"($v < $x)" }

  /** Greater than or equal to */
  def >=[V](x: Expr[V]): Expr[Boolean] = Expr { implicit ctx => sql"($v >= $x)" }

  /** Less than or equal to */
  def <=[V](x: Expr[V]): Expr[Boolean] = Expr { implicit ctx => sql"($v <= $x)" }

  /** Translates to a SQL `CAST` from one type to another */
  def cast[V: TypeMapper]: Expr[V] = Expr { implicit ctx =>
    sql"CAST($v AS ${SqlStr.raw(implicitly[TypeMapper[V]].castTypeString)})"
  }

  /**
   * Similar to [[cast]], but allows you to pass in an explicit [[SqlStr]] to
   * further specify the SQL type you want to cast to
   */
  def castNamed[V: TypeMapper](typeName: SqlStr): Expr[V] = Expr { implicit ctx =>
    sql"CAST($v AS $typeName)"
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy