Skip to content

Commit

Permalink
Cache OuterTransformers
Browse files Browse the repository at this point in the history
  • Loading branch information
MateuszKubuszok committed Feb 8, 2025
1 parent 25abfd9 commit 551507f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import io.scalaland.chimney.partial

trait PartialOuterTransformers { this: Derivation =>

import ChimneyType.Implicits.*

abstract protected class PartialOuterTransformer[From: Type, To: Type] {
type InnerFrom
implicit val InnerFrom: Type[InnerFrom]
Expand All @@ -30,7 +32,11 @@ trait PartialOuterTransformers { this: Derivation =>
}
protected object PartialOuterTransformer {

private val implicitCache = new Type.Cache[Option]
def unapply[From, To](implicit from: Type[From], to: Type[To]): Option[PartialOuterTransformer[From, To]] =
summonPartialOuterTransformer[From, To]
implicitCache(
Type[integrations.PartialOuterTransformer[From, To, From, To]]
.asInstanceOf[Type[PartialOuterTransformer[From, To]]]
)(summonPartialOuterTransformer[From, To])
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import io.scalaland.chimney.partial

trait TotalOuterTransformers { this: Derivation =>

import ChimneyType.Implicits.*

abstract protected class TotalOuterTransformer[From: Type, To: Type] {
type InnerFrom
implicit val InnerFrom: Type[InnerFrom]
Expand All @@ -28,7 +30,10 @@ trait TotalOuterTransformers { this: Derivation =>
}
protected object TotalOuterTransformer {

private val implicitCache = new Type.Cache[Option]
def unapply[From, To](implicit from: Type[From], to: Type[To]): Option[TotalOuterTransformer[From, To]] =
summonTotalOuterTransformer[From, To]
implicitCache(
Type[integrations.TotalOuterTransformer[From, To, From, To]].asInstanceOf[Type[TotalOuterTransformer[From, To]]]
)(summonTotalOuterTransformer[From, To])
}
}

0 comments on commit 551507f

Please sign in to comment.