aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/core.scala
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2016-12-21 00:47:32 -0500
committerStewart Stewart <stewinsalot@gmail.com>2016-12-21 00:47:32 -0500
commite264100f16c7f5a8d4a3c2c0cd71cb964ac6a689 (patch)
tree730b1df1dd6d12b47fc3767de8d9519960c3af3f /src/main/scala/xyz/driver/core/core.scala
parent687919e7c163e1ff8a002f1a2c24e4b37f75f20d (diff)
downloaddriver-core-e264100f16c7f5a8d4a3c2c0cd71cb964ac6a689.tar.gz
driver-core-e264100f16c7f5a8d4a3c2c0cd71cb964ac6a689.tar.bz2
driver-core-e264100f16c7f5a8d4a3c2c0cd71cb964ac6a689.zip
add bidirectional id type mappers
Diffstat (limited to 'src/main/scala/xyz/driver/core/core.scala')
-rw-r--r--src/main/scala/xyz/driver/core/core.scala9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala
index 8c13aeb..cbc5ce9 100644
--- a/src/main/scala/xyz/driver/core/core.scala
+++ b/src/main/scala/xyz/driver/core/core.scala
@@ -38,9 +38,16 @@ package core {
implicit def idEqual[T]: Equal[Id[T]] = Equal.equal[Id[T]](_ == _)
implicit def idOrdering[T]: Ordering[Id[T]] = Ordering.by[Id[T], String](_.value)
+ sealed trait Mapper[Entity, Row]
object Mapper {
- def apply[A, B]: (Id[A] => Id[B]) = (id: Id[A]) => Id[B](id.value)
+ def apply[Entity, Row] = new Mapper[Entity, Row] {}
}
+
+ implicit def to[Row, Entity](rowId: Id[Row])(implicit ev: Mapper[Entity, Row]): Id[Entity] =
+ Id[Entity](rowId.value)
+
+ implicit def from[Entity, Row](entityId: Id[Entity])(implicit ev: Mapper[Entity, Row]): Id[Row] =
+ Id[Row](entityId.value)
}
final case class Name[+Tag](value: String) extends AnyVal {