implicit def apply[T: AvroField]: AvroType[T] = AvroType()

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")
    }
  }