implicit def apply[T]()

in parquet/src/main/scala/magnolify/parquet/ParquetType.scala [82:105]


  implicit def apply[T](implicit f: ParquetField[T], pa: ParquetArray): ParquetType[T] =
    ParquetType(CaseMapper.identity)

  def apply[T](
    cm: CaseMapper
  )(implicit f: ParquetField[T], pa: ParquetArray): ParquetType[T] = f match {
    case r: ParquetField.Record[_] =>
      new ParquetType[T] {
        @transient override lazy val schema: MessageType = Schema.message(r.schema(cm))
        @transient override lazy val avroSchema: AvroSchema = {
          val s = new AvroSchemaConverter().convert(schema)
          // add doc to avro schema
          val fieldDocs = f.fieldDocs(cm)
          SchemaUtil.deepCopy(s, f.typeDoc, fieldDocs.get)
        }

        override val avroCompat: Boolean =
          pa == ParquetArray.AvroCompat.avroCompat || f.hasAvroArray
        override def write(c: RecordConsumer, v: T): Unit = r.write(c, v)(cm)
        override def newConverter: TypeConverter[T] = r.newConverter
      }
    case _ =>
      throw new IllegalArgumentException(s"ParquetType can only be created from Record. Got $f")
  }