/** * Generated by API Builder - https://www.apibuilder.io * Service version: 0.0.0-beta.1 * User agent: apibuilder app.apibuilder.io/chio/core-common/0.0.0-beta.1/play_2_x_standalone_json */ package io.chio.core.common.v0.models { /** * A generic error providing a message and some basic meta data. * * @param id A guid for identifying the error e.g. in log files. * @param timestamp Timestamp of the when the error occurred. * @param source An optional source on which the error occurred. * @param `type` An optional type for categorizing e.g. `validation` or `invalid_state`. * @param message The actual message of the error. */ final case class GenericError( id: _root_.java.util.UUID, timestamp: _root_.org.joda.time.DateTime, source: _root_.scala.Option[String] = None, `type`: _root_.scala.Option[String] = None, message: String ) /** * Response model indicating the health of a service. * * @param health The current health of the service. Normally this is `healthy`, otherwise an * simple error message can be shown. */ final case class Healthcheck( health: String ) } package io.chio.core.common.v0.models { package object json { import play.api.libs.json.__ import play.api.libs.json.JsString import play.api.libs.json.Writes import play.api.libs.functional.syntax._ import io.chio.core.common.v0.models.json._ private[v0] implicit val jsonReadsUUID: play.api.libs.json.Reads[_root_.java.util.UUID] = __.read[String].map { str => _root_.java.util.UUID.fromString(str) } private[v0] implicit val jsonWritesUUID: play.api.libs.json.Writes[_root_.java.util.UUID] = (x: _root_.java.util.UUID) => play.api.libs.json.JsString(x.toString) private[v0] implicit val jsonReadsJodaDateTime: play.api.libs.json.Reads[_root_.org.joda.time.DateTime] = __.read[String].map { str => _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseDateTime(str) } private[v0] implicit val jsonWritesJodaDateTime: play.api.libs.json.Writes[_root_.org.joda.time.DateTime] = (x: _root_.org.joda.time.DateTime) => { play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.dateTime.print(x)) } private[v0] implicit val jsonReadsJodaLocalDate: play.api.libs.json.Reads[_root_.org.joda.time.LocalDate] = __.read[String].map { str => _root_.org.joda.time.format.ISODateTimeFormat.dateTimeParser.parseLocalDate(str) } private[v0] implicit val jsonWritesJodaLocalDate: play.api.libs.json.Writes[_root_.org.joda.time.LocalDate] = (x: _root_.org.joda.time.LocalDate) => { play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.date.print(x)) } implicit def jsonReadsCoreCommonGenericError: play.api.libs.json.Reads[io.chio.core.common.v0.models.GenericError] = { for { id <- (__ \ "id").read[_root_.java.util.UUID] timestamp <- (__ \ "timestamp").read[_root_.org.joda.time.DateTime] source <- (__ \ "source").readNullable[String] `type` <- (__ \ "type").readNullable[String] message <- (__ \ "message").read[String] } yield GenericError(id, timestamp, source, `type`, message) } def jsObjectGenericError(obj: io.chio.core.common.v0.models.GenericError): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "id" -> play.api.libs.json.JsString(obj.id.toString), "timestamp" -> play.api.libs.json.JsString(_root_.org.joda.time.format.ISODateTimeFormat.dateTime.print(obj.timestamp)), "message" -> play.api.libs.json.JsString(obj.message) ) ++ (obj.source match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("source" -> play.api.libs.json.JsString(x)) }) ++ (obj.`type` match { case None => play.api.libs.json.Json.obj() case Some(x) => play.api.libs.json.Json.obj("type" -> play.api.libs.json.JsString(x)) }) } implicit def jsonWritesCoreCommonGenericError: play.api.libs.json.Writes[GenericError] = { (obj: io.chio.core.common.v0.models.GenericError) => { io.chio.core.common.v0.models.json.jsObjectGenericError(obj) } } implicit def jsonReadsCoreCommonHealthcheck: play.api.libs.json.Reads[io.chio.core.common.v0.models.Healthcheck] = { (__ \ "health").read[String].map { x => Healthcheck(health = x) } } def jsObjectHealthcheck(obj: io.chio.core.common.v0.models.Healthcheck): play.api.libs.json.JsObject = { play.api.libs.json.Json.obj( "health" -> play.api.libs.json.JsString(obj.health) ) } implicit def jsonWritesCoreCommonHealthcheck: play.api.libs.json.Writes[Healthcheck] = { (obj: io.chio.core.common.v0.models.Healthcheck) => { io.chio.core.common.v0.models.json.jsObjectHealthcheck(obj) } } } }