diff options
author | Vlad Uspensky <v.uspenskiy@icloud.com> | 2016-12-22 22:44:59 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-22 22:44:59 -0800 |
commit | 7586f5477c9fd09df68d76e5f03313f0ad438bb3 (patch) | |
tree | 056edf8076d61647f7a7fd0dd5a38bec8b96ef11 /src/main/scala | |
parent | a9e83ef7c5452d30bb0b49ae508efb17210c49ef (diff) | |
parent | 6674c5b096bd6fce5706632e0d63904afe0c91de (diff) | |
download | driver-core-7586f5477c9fd09df68d76e5f03313f0ad438bb3.tar.gz driver-core-7586f5477c9fd09df68d76e5f03313f0ad438bb3.tar.bz2 driver-core-7586f5477c9fd09df68d76e5f03313f0ad438bb3.zip |
Merge pull request #15 from drivergroup/symmetric-id-mapper
Allow explicit conversion with symmetric id mapper via apply
Diffstat (limited to 'src/main/scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/core.scala | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 1c92423..db2af95 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -39,12 +39,15 @@ 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[E, R] + sealed class Mapper[E, R] { + def apply[T >: E](id: Id[R]): Id[T] = Id[E](id.value) + def apply[T >: R](id: Id[E])(implicit dummy: DummyImplicit): Id[T] = Id[R](id.value) + } object Mapper { - def apply[E, R] = new Mapper[E, R] {} + def apply[E, R] = new Mapper[E, R] } - implicit def convertRE[R, E](id: Id[R])(implicit ev: Mapper[E, R]): Id[E] = Id[E](id.value) - implicit def convertER[E, R](id: Id[E])(implicit ev: Mapper[E, R]): Id[R] = Id[R](id.value) + implicit def convertRE[R, E](id: Id[R])(implicit mapper: Mapper[E, R]): Id[E] = mapper[E](id) + implicit def convertER[E, R](id: Id[E])(implicit mapper: Mapper[E, R]): Id[R] = mapper[R](id) } final case class Name[+Tag](value: String) extends AnyVal { |