in avro/src/main/scala/magnolify/avro/AvroType.scala [43:58]
implicit def apply[T: AvroField]: AvroType[T] = AvroType(CaseMapper.identity)
def apply[T](cm: CaseMapper)(implicit f: AvroField[T]): AvroType[T] = {
f match {
case r: AvroField.Record[_] =>
r.schema(cm) // fail fast on bad annotations
new AvroType[T] {
private val caseMapper: CaseMapper = cm
@transient override lazy val schema: Schema = r.schema(caseMapper)
override def from(v: GenericRecord): T = r.from(v)(caseMapper)
override def to(v: T): GenericRecord = r.to(v)(caseMapper)
}
case _ =>
throw new IllegalArgumentException(s"AvroType can only be created from Record. Got $f")
}
}