in avro/src/main/scala/magnolify/avro/AvroType.scala [316:335]
def bigDecimal(precision: Int, scale: Int = 0): AvroField[BigDecimal] =
logicalType[Array[Byte]](LogicalTypes.decimal(precision, scale))(
Decimal.fromBytes(_, precision, scale)
)(Decimal.toBytes(_, precision, scale))
implicit val afUuid: AvroField[ju.UUID] =
logicalType[CharSequence](LogicalTypes.uuid())(cs => ju.UUID.fromString(cs.toString))(
_.toString
)
// date
implicit val afDate: AvroField[LocalDate] =
logicalType[Int](LogicalTypes.date())(x => LocalDate.ofEpochDay(x.toLong))(_.toEpochDay.toInt)
private lazy val EpochJodaDate = new joda.LocalDate(1970, 1, 1)
implicit val afJodaDate: AvroField[joda.LocalDate] =
logicalType[Int](LogicalTypes.date()) { daysFromEpoch =>
EpochJodaDate.plusDays(daysFromEpoch)
} { date =>
joda.Days.daysBetween(EpochJodaDate, date).getDays
}