All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.landoop.jdbc4.client.insert.kt Maven / Gradle / Ivy

The newest version!
package com.landoop.jdbc4.client

import com.landoop.jdbc4.client.domain.InsertField
import org.apache.avro.Schema
import org.apache.avro.generic.GenericData
import org.apache.avro.generic.GenericDatumWriter
import org.apache.avro.generic.GenericRecord
import org.apache.avro.io.EncoderFactory
import java.io.ByteArrayOutputStream

fun rowToValueRecord(schema: Schema, fields: List, row: List): GenericRecord {
  val record = GenericData.Record(schema)
  schema.fields.forEach { field ->
    val rowIndex = fields.indexOfFirst { it.name == field.name() }
    val value = when (rowIndex) {
    // if -1 then the schema field did not exist in the insert statement, so we pad with null
      -1 -> null
    // otherwise we know the offset into the row
      else -> row[rowIndex]
    }
    record.put(field.name(), value)
  }
  return record
}

fun recordToJson(record: GenericRecord): String {
  val writer = GenericDatumWriter(record.schema)
  val baos = ByteArrayOutputStream()
  val jsonEncoder = EncoderFactory.get().jsonEncoder(record.schema, baos)
  writer.write(record, jsonEncoder)
  jsonEncoder.flush()
  return String(baos.toByteArray())
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy