[#1920] Add more implicit defs in order to treat Record1, ..., Record[N]

as Scala's Tuple1, ..., Tuple[N]
This commit is contained in:
Lukas Eder 2012-10-31 22:48:05 +01:00
parent b32cf31f5b
commit 21d1e062fa
2 changed files with 72 additions and 1 deletions

View File

@ -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)
}
}

View File

@ -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);
}
}