Skip to content

Commit

Permalink
zio#341 - Implement Ltrim2 and Rtrim2 for Postgres and Oracle
Browse files Browse the repository at this point in the history
  • Loading branch information
hbibel committed Apr 8, 2023
1 parent 1dc612e commit 0b9e585
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 36 deletions.
26 changes: 0 additions & 26 deletions core/shared/src/test/scala/zio-sql/HelloWorldSpec.scala

This file was deleted.

3 changes: 2 additions & 1 deletion oracle/src/main/scala/zio/sql/oracle/OracleSqlModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ trait OracleSqlModule extends Sql { self =>
}

object OracleFunctionDef {
val Sind = FunctionDef[Double, Double](FunctionName("sind"))
val Ltrim2 = FunctionDef[(String, String), String](FunctionName("ltrim"))
val Rtrim2 = FunctionDef[(String, String), String](FunctionName("rtrim"))
}
}
10 changes: 2 additions & 8 deletions oracle/src/test/scala/zio/sql/oracle/CommonFunctionDefSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,11 @@ import zio.Cause
import zio.stream.ZStream
import zio.test.Assertion._
import zio.test._
import zio.schema.DeriveSchema
import zio.sql.expr.FunctionDef.{ CharLength => _, _ }
import zio.sql.table._

object CommonFunctionDefSpec extends OracleRunnableSpec with ShopSchema {
object CommonFunctionDefSpec extends OracleRunnableSpec with ShopSchema with DualSchema {
import Customers._

case class Dual(dummy: String)
implicit val dummySchema = DeriveSchema.gen[Dual]
val dual = Table.defineTable[Dual]
val dommy = dual.columns
import Dual._

private def collectAndCompare[R, E](
expected: Seq[String],
Expand Down
25 changes: 25 additions & 0 deletions oracle/src/test/scala/zio/sql/oracle/CustomFunctionDefSpec.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package zio.sql.oracle

import zio.test.Assertion._
import zio.test.TestAspect.timeout
import zio.test._
import zio._

object CustomFunctionDefSpec extends OracleRunnableSpec with DualSchema {
import OracleFunctionDef._

import Dual._

override def specLayered = suite("Oracle FunctionDef")(
test("ltrim2") {
assertZIO(execute(select(Ltrim2("$## foo$#", "#$")).from(dual)).runHead.some)(
equalTo(" foo$#")
)
},
test("rtrim2") {
assertZIO(execute(select(Rtrim2("$#foo $##", "#$")).from(dual)).runHead.some)(
equalTo("$#foo ")
)
}
) @@ timeout(5.minutes)
}
14 changes: 14 additions & 0 deletions oracle/src/test/scala/zio/sql/oracle/DualSchema.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package zio.sql.oracle

import zio.schema.DeriveSchema
import zio.sql.table._

trait DualSchema {
object Dual {
case class Dual(dummy: String)

implicit val dummySchema = DeriveSchema.gen[Dual]
val dual = Table.defineTable[Dual]
val dummy = dual.columns
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ trait PostgresSqlModule extends Sql { self =>
val LocaltimestampWithPrecision = FunctionDef[Int, Instant](FunctionName("localtimestamp"))
val LocaltimeWithPrecision = FunctionDef[Int, LocalTime](FunctionName("localtime"))
val LPad = FunctionDef[(String, Int, String), String](FunctionName("lpad"))
val Ltrim2 = FunctionDef[(String, String), String](FunctionName("ltrim"))
val MakeDate = FunctionDef[(Int, Int, Int), LocalDate](FunctionName("make_date"))
val MakeInterval = FunctionDef[Interval, Interval](FunctionName("make_interval"))
val MakeTime = FunctionDef[(Int, Int, Double), LocalTime](FunctionName("make_time"))
Expand All @@ -271,6 +272,7 @@ trait PostgresSqlModule extends Sql { self =>
val Reverse = FunctionDef[String, String](FunctionName("reverse"))
val Right = FunctionDef[(String, Int), String](FunctionName("right"))
val RPad = FunctionDef[(String, Int, String), String](FunctionName("rpad"))
val Rtrim2 = FunctionDef[(String, String), String](FunctionName("rtrim"))
val SetSeed = FunctionDef[Double, Unit](FunctionName("setseed"))
val Sind = FunctionDef[Double, Double](FunctionName("sind"))
val SplitPart = FunctionDef[(String, String, Int), String](FunctionName("split_part"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,17 @@ object CustomFunctionDefSpec extends PostgresRunnableSpec with DbSchema {
val testResult = execute(query)
collectAndCompare(expected, testResult)
}
)
),
test("ltrim2") {
assertZIO(execute(select(Ltrim2("$## foo$#", "#$"))).runHead.some)(
equalTo(" foo$#")
)
},
test("rtrim2") {
assertZIO(execute(select(Rtrim2("$#foo $##", "#$"))).runHead.some)(
equalTo("$#foo ")
)
}
),
test("repeat") {
assertZIO(execute(select(Repeat("Zio", 3))).runHead.some)(equalTo("ZioZioZio"))
Expand Down

0 comments on commit 0b9e585

Please sign in to comment.