org.scanamo.generic.semiauto

Semi-automatic format derivation.

This object provides helpers for creating org.scanamo.DynamoFormat instances for case classes.

Type members

Inherited types

type FieldName = String
Inherited from:
FormatDerivation (hidden)
type Typeclass[A] = DynamoFormat[A]
Inherited from:
FormatDerivation (hidden)
type Valid[A] = Either[Type[(FieldName, DynamoReadError)], A]
Inherited from:
FormatDerivation (hidden)

Value members

Concrete methods

final inline def deriveDynamoFormat[A](using inline A: Of[A]): DynamoFormat[A]

Inherited methods

inline def `getParams__`[T, Labels <: Tuple, Params <: Tuple](annotations: Map[String, List[Any]], inheritedAnnotations: Map[String, List[Any]], typeAnnotations: Map[String, List[Any]], repeated: Map[String, Boolean], defaults: Map[String, Option[() => Any]], idx: Int): List[Param[Typeclass, T]]
Inherited from:
CommonDerivation
inline override protected def deriveSubtype[s](m: Of[s]): TypeClass[s]
Definition Classes
Derivation -> SealedTraitDerivation
Inherited from:
Derivation
inline def derived[A](using Of[A]): TypeClass[A]
Inherited from:
Derivation
inline def derivedMirror[A](using mirror: Of[A]): TypeClass[A]
Inherited from:
Derivation
inline def derivedMirrorProduct[A](product: ProductOf[A]): TypeClass[A]
Inherited from:
CommonDerivation
inline def derivedMirrorSum[A](sum: SumOf[A]): TypeClass[A]
Inherited from:
Derivation
inline def getParams[T, Labels <: Tuple, Params <: Tuple](annotations: Map[String, List[Any]], typeAnnotations: Map[String, List[Any]], repeated: Map[String, Boolean], idx: Int): List[Param[Typeclass, T]]
Inherited from:
CommonDerivation
inline def getParams_[T, Labels <: Tuple, Params <: Tuple](annotations: Map[String, List[Any]], inheritedAnnotations: Map[String, List[Any]], typeAnnotations: Map[String, List[Any]], repeated: Map[String, Boolean], idx: Int): List[Param[Typeclass, T]]
Inherited from:
CommonDerivation
def join[T](cc: CaseClass[Typeclass, T]): DynamoFormat[T]

Must be implemented by the user of Magnolia to construct a typeclass for case class T using the provided type info. E.g. if we are deriving Show[T] typeclasses, and T is a case class Foo(...), we need to constuct Show[Foo].

Must be implemented by the user of Magnolia to construct a typeclass for case class T using the provided type info. E.g. if we are deriving Show[T] typeclasses, and T is a case class Foo(...), we need to constuct Show[Foo].

This method is called 'join' because typically it will join together the typeclasses for all the parameters of the case class, into a single typeclass for the case class itself. The field CaseClass.params can provide useful information for doing this.

Value parameters:
caseClass

information about the case class T, its parameters, and their typeclasses

Inherited from:
FormatDerivation (hidden)
inline protected def sealedTraitFromMirror[A](m: SumOf[A]): SealedTrait[Typeclass, A]
Inherited from:
SealedTraitDerivation
def split[T](st: SealedTrait[Typeclass, T]): DynamoFormat[T]

This must be implemented by the user of Magnolia to construct a Typeclass for 'T', where 'T' is a Sealed Trait or Scala 3 Enum, using the provided type info. E.g. if we are deriving 'Show[T]' typeclasses, and T is an enum 'Suit' (eg with values Diamonds, Clubs, etc), we need to constuct 'Show[Suit]'.

This must be implemented by the user of Magnolia to construct a Typeclass for 'T', where 'T' is a Sealed Trait or Scala 3 Enum, using the provided type info. E.g. if we are deriving 'Show[T]' typeclasses, and T is an enum 'Suit' (eg with values Diamonds, Clubs, etc), we need to constuct 'Show[Suit]'.

This method is called 'split' because it will ''split'' the different possible types of the SealedTrait, and handle each one to finally produce a typeclass capable of handling any possible subtype of the trait.

A useful function for implementing this method is SealedTrait#choose, which can take a value instance and provide information on the specific subtype of the sealedTrait which that value is.

Inherited from:
FormatDerivation (hidden)
transparent inline def subtypes[T, SubtypeTuple <: Tuple](m: SumOf[T], idx: Int): List[Subtype[Typeclass, T, _]]
Inherited from:
Derivation
transparent inline protected def subtypesFromMirror[A, SubtypeTuple <: Tuple](m: SumOf[A], idx: Int): List[Subtype[Typeclass, A, _]]
Inherited from:
SealedTraitDerivation