override def parse()

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