in tools/src/main/scala/magnolify/tools/BigQueryParser.scala [24:51]
override def parse(schema: TableSchema): Record =
parseRecord(schema.getFields.asScala.toList)
private def parseRecord(fields: List[TableFieldSchema]): Record = {
val fs = fields.map { f =>
val schema = f.getType match {
case "INT64" => Primitive.Long
case "FLOAT64" => Primitive.Double
case "NUMERIC" => Primitive.BigDecimal
case "BOOL" => Primitive.Boolean
case "STRING" => Primitive.String
case "BYTES" => Primitive.Bytes
case "TIMESTAMP" => Primitive.Instant
case "DATE" => Primitive.LocalDate
case "TIME" => Primitive.LocalTime
case "DATETIME" => Primitive.LocalDateTime
case "STRUCT" => parseRecord(f.getFields.asScala.toList)
}
val moddedSchema = f.getMode match {
case "REQUIRED" => schema
case "NULLABLE" => Optional(schema)
case "REPEATED" => Repeated(schema)
}
Record.Field(f.getName, Option(f.getDescription), moddedSchema)
}
Record(None, None, fs)
}