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

lucuma.odb.json.cataloginfo.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 eu.timepit.refined.types.string.NonEmptyString
import io.circe.Decoder
import io.circe.Encoder
import io.circe.Json
import io.circe.refined.given
import io.circe.syntax.*
import lucuma.core.enums.CatalogName
import lucuma.core.model.CatalogInfo

trait CatalogInfoCodec {

  given Decoder[CatalogInfo] =
    Decoder.instance(c =>
      for {
        name <- c.downField("name").as[CatalogName]
        id   <- c.downField("id").as[NonEmptyString]
        ot   <- c.downField("objectType").as[Option[NonEmptyString]]
      } yield CatalogInfo(name, id, ot)
    )

  given Encoder[CatalogInfo] =
    Encoder.instance { ci =>
      Json.obj(
        "name"       -> ci.catalog.asJson,
        "id"         -> ci.id.asJson,
        "objectType" -> ci.objectType.asJson
      )
    }
}

object cataloginfo extends CatalogInfoCodec




© 2015 - 2024 Weber Informatics LLC | Privacy Policy