diff --git a/jOOQ-scala/src/main/scala/org/jooq/scala/Conversions.scala b/jOOQ-scala/src/main/scala/org/jooq/scala/Conversions.scala index 0e751825fe..987d21f8ce 100644 --- a/jOOQ-scala/src/main/scala/org/jooq/scala/Conversions.scala +++ b/jOOQ-scala/src/main/scala/org/jooq/scala/Conversions.scala @@ -305,4 +305,60 @@ object Conversions { case AnyFieldWrapper(f) => f case _ => new AnyFieldWrapper(f) } + + /** + * Enrich any {@link org.jooq.Record1} with the {@link Tuple1} case class + */ + implicit def asTuple1[T1](r : Record1[T1]): Tuple1[T1] = r match { + case _ => Tuple1(r.value1) + } + + /** + * Enrich any {@link org.jooq.Record2} with the {@link Tuple2} case class + */ + implicit def asTuple2[T1, T2](r : Record2[T1, T2]): Tuple2[T1, T2] = r match { + case _ => Tuple2(r.value1, r.value2) + } + + /** + * Enrich any {@link org.jooq.Record3} with the {@link Tuple3} case class + */ + implicit def asTuple3[T1, T2, T3](r : Record3[T1, T2, T3]): Tuple3[T1, T2, T3] = r match { + case _ => Tuple3(r.value1, r.value2, r.value3) + } + + /** + * Enrich any {@link org.jooq.Record4} with the {@link Tuple4} case class + */ + implicit def asTuple4[T1, T2, T3, T4](r : Record4[T1, T2, T3, T4]): Tuple4[T1, T2, T3, T4] = r match { + case _ => Tuple4(r.value1, r.value2, r.value3, r.value4) + } + + /** + * Enrich any {@link org.jooq.Record5} with the {@link Tuple5} case class + */ + implicit def asTuple5[T1, T2, T3, T4, T5](r : Record5[T1, T2, T3, T4, T5]): Tuple5[T1, T2, T3, T4, T5] = r match { + case _ => Tuple5(r.value1, r.value2, r.value3, r.value4, r.value5) + } + + /** + * Enrich any {@link org.jooq.Record6} with the {@link Tuple6} case class + */ + implicit def asTuple6[T1, T2, T3, T4, T5, T6](r : Record6[T1, T2, T3, T4, T5, T6]): Tuple6[T1, T2, T3, T4, T5, T6] = r match { + case _ => Tuple6(r.value1, r.value2, r.value3, r.value4, r.value5, r.value6) + } + + /** + * Enrich any {@link org.jooq.Record7} with the {@link Tuple7} case class + */ + implicit def asTuple7[T1, T2, T3, T4, T5, T6, T7](r : Record7[T1, T2, T3, T4, T5, T6, T7]): Tuple7[T1, T2, T3, T4, T5, T6, T7] = r match { + case _ => Tuple7(r.value1, r.value2, r.value3, r.value4, r.value5, r.value6, r.value7) + } + + /** + * Enrich any {@link org.jooq.Record8} with the {@link Tuple8} case class + */ + implicit def asTuple8[T1, T2, T3, T4, T5, T6, T7, T8](r : Record8[T1, T2, T3, T4, T5, T6, T7, T8]): Tuple8[T1, T2, T3, T4, T5, T6, T7, T8] = r match { + case _ => Tuple8(r.value1, r.value2, r.value3, r.value4, r.value5, r.value6, r.value7, r.value8) + } } diff --git a/jOOQ-scala/src/test/scala/org/jooq/scala/example/Test.scala b/jOOQ-scala/src/test/scala/org/jooq/scala/example/Test.scala index 6fa8f66008..261c91a663 100644 --- a/jOOQ-scala/src/test/scala/org/jooq/scala/example/Test.scala +++ b/jOOQ-scala/src/test/scala/org/jooq/scala/example/Test.scala @@ -48,7 +48,7 @@ import org.jooq.scala.Conversions._ object Test { def main(args: Array[String]): Unit = { val c = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); - val f = new Factory(c, SQLDialect.H2); + val f = new Executor(c, SQLDialect.H2); val x = T_AUTHOR as "x" for (r <- f @@ -71,5 +71,20 @@ object Test { println(r) } + + // Tuple assignment + val tuple = + f fetchOne ( + select ( + T_AUTHOR.FIRST_NAME, + T_AUTHOR.LAST_NAME + ) + from T_AUTHOR + where T_AUTHOR.ID === 1 + ) + + + println("first name : " + tuple._1); + println("last name : " + tuple._2); } } \ No newline at end of file