Sha256: 6837a35a29890a740309805c20fa82581b6a61513b16fddb10d256b606c137dd

Contents?: true

Size: 983 Bytes

Versions: 4

Compression:

Stored size: 983 Bytes

Contents

package org.embulk.parser.firebase_avro.json.user_dim

import io.circe.Json
import io.circe.syntax._
import org.embulk.parser.firebase_avro.define.root.user_dim.User_Properties
import org.embulk.parser.firebase_avro.json.CustomEncoder.mapEncoder

import scala.collection.mutable

object UserPropertiesJsonSerializer {
  def apply(properties: List[User_Properties]): Option[Json] = {
    val map = mutable.Map[String, Any]()
    properties.foreach { p =>
      val value: Option[Any] = for {
        v  <- p.value
        iv <- v.value
      } yield {
        v.set_timestamp_usec.foreach(a => map.put("set_timestamp_usec", a))
        v.index.foreach(a => map.put("index", a))
        iv.float_value
          .orElse(iv.double_value)
          .orElse(iv.int_value)
          .orElse(iv.string_value)
      }
      for {
        key   <- p.key
        value <- value
      } yield map.put(key, value)
    }
    if (map.nonEmpty) {
      Some(map.toMap.asJson)
    } else None
  }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
embulk-parser-firebase_avro-0.1.3 src/main/scala/org/embulk/parser/firebase_avro/json/user_dim/UserPropertiesJsonSerializer.scala
embulk-parser-firebase_avro-0.1.2 src/main/scala/org/embulk/parser/firebase_avro/json/user_dim/UserPropertiesJsonSerializer.scala
embulk-parser-firebase_avro-0.1.1 src/main/scala/org/embulk/parser/firebase_avro/json/user_dim/UserPropertiesJsonSerializer.scala
embulk-parser-firebase_avro-0.1.0 src/main/scala/org/embulk/parser/firebase_avro/json/user_dim/UserPropertiesJsonSerializer.scala