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

lucuma.odb.json.epoch.scala Maven / Gradle / Ivy

// Copyright (c) 2016-2023 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package lucuma.odb.json

import io.circe.Codec
import io.circe.Decoder
import io.circe.DecodingFailure
import io.circe.Encoder
import io.circe.HCursor
import io.circe.Json
import io.circe.syntax.*
import lucuma.core.math.Epoch

trait EpochCodec {
  
  given Codec[Epoch] with {
    def apply(e: Epoch): Json =
      Epoch.fromString.reverseGet(e).asJson

    def apply(c: HCursor): Decoder.Result[Epoch] = 
      Decoder[String].apply(c).flatMap {s =>
        Epoch.fromString.getOption(s).toRight(DecodingFailure(s"Invalid epoch value: $s", c.history))
        }
  }
}

object epoch extends EpochCodec




© 2015 - 2024 Weber Informatics LLC | Privacy Policy