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