diff options
5 files changed, 52 insertions, 18 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/ListResponse.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/ListResponse.scala index 9faa77f..c823df5 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/ListResponse.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/ListResponse.scala @@ -23,9 +23,9 @@ object ListResponse { ((JsPath \ "itemsCount").read[Int] and (JsPath \ "pageNumber").read[Int] and (JsPath \ "pageSize").read[Int] and - (JsPath \ "lastUpdate").readNullable[LocalDateTime] - ).apply { (itemsCount: Int, pageNumber: Int, pageSize: Int, lastUpdate: Option[LocalDateTime]) => - Meta(itemsCount, pageNumber, pageSize, lastUpdate) + (JsPath \ "lastUpdate").readNullable[LocalDateTime]).apply { + (itemsCount: Int, pageNumber: Int, pageSize: Int, lastUpdate: Option[LocalDateTime]) => + Meta(itemsCount, pageNumber, pageSize, lastUpdate) } } @@ -34,21 +34,23 @@ object ListResponse { (JsPath \ "pageNumber").write[Int] and (JsPath \ "pageSize").write[Int] and (JsPath \ "lastUpdate").write[Option[LocalDateTime]] - ) (unlift(Meta.unapply)) + )(unlift(Meta.unapply)) implicit val listResponseMetaJsonFormat: Format[Meta] = Format( listResponseMetaJsonReads, listResponseMetaJsonWrites ) - implicit def listResponseJsonWrites[T](implicit f: Writes[T]): Writes[ListResponse[T]] = ( - (JsPath \ "items").write[Seq[T]] and - (JsPath \ "meta").write[Meta] - ) (unlift(ListResponse.unapply[T])) - - implicit def listResponseJsonFormat[T](implicit f: Format[T]): Format[ListResponse[T]] = ( - (JsPath \ "items").format(seqJsonFormat[T]) and - (JsPath \ "meta").format[Meta] - ) (ListResponse.apply[T], unlift(ListResponse.unapply[T])) + implicit def listResponseJsonWrites[T](implicit f: Writes[T]): Writes[ListResponse[T]] = + ( + (JsPath \ "items").write[Seq[T]] and + (JsPath \ "meta").write[Meta] + )(unlift(ListResponse.unapply[T])) + + implicit def listResponseJsonFormat[T](implicit f: Format[T]): Format[ListResponse[T]] = + ( + (JsPath \ "items").format(seqJsonFormat[T]) and + (JsPath \ "meta").format[Meta] + )(ListResponse.apply[T], unlift(ListResponse.unapply[T])) } diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/criterion/ApiCriterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/criterion/ApiCriterion.scala index 1e7114a..4986b17 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/criterion/ApiCriterion.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/criterion/ApiCriterion.scala @@ -3,6 +3,8 @@ package xyz.driver.pdsuidomain.formats.json.criterion import xyz.driver.pdsuicommon.json.Serialization.seqJsonFormat import play.api.libs.functional.syntax._ import play.api.libs.json._ +import xyz.driver.pdsuicommon.domain.{LongId, StringId} +import xyz.driver.pdsuidomain.entities.{Arm, Criterion, Trial} import xyz.driver.pdsuidomain.formats.json.label.ApiCriterionLabel import xyz.driver.pdsuidomain.services.CriterionService.RichCriterion @@ -12,7 +14,20 @@ final case class ApiCriterion(id: Long, text: Option[String], isCompound: Boolean, labels: Seq[ApiCriterionLabel], - trialId: String) + trialId: String) { + + def toDomain = RichCriterion( + criterion = Criterion( + id = LongId[Criterion](id), + trialId = StringId[Trial](trialId), + text, + isCompound, + meta.getOrElse("") + ), + armIds = arms.map(LongId[Arm]), + labels = labels.map(_.toDomain(LongId[Criterion](id))) + ) +} object ApiCriterion { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/hypothesis/ApiHypothesis.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/hypothesis/ApiHypothesis.scala index 7446ec3..bf18a60 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/hypothesis/ApiHypothesis.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/hypothesis/ApiHypothesis.scala @@ -2,11 +2,20 @@ package xyz.driver.pdsuidomain.formats.json.hypothesis import java.util.UUID -import xyz.driver.pdsuidomain.entities.Hypothesis import play.api.libs.functional.syntax._ import play.api.libs.json.{Format, JsPath} +import xyz.driver.pdsuicommon.domain.UuidId +import xyz.driver.pdsuidomain.entities.Hypothesis + +final case class ApiHypothesis(id: UUID, name: String, treatmentType: String, description: String) { -final case class ApiHypothesis(id: UUID, name: String, treatmentType: String, description: String) + def toDomain = Hypothesis( + id = UuidId[Hypothesis](id), + name = name, + treatmentType = treatmentType, + description = description + ) +} object ApiHypothesis { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala index 54d2cb7..ebef225 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiInterventionType.scala @@ -2,9 +2,13 @@ package xyz.driver.pdsuidomain.formats.json.intervention import play.api.libs.functional.syntax._ import play.api.libs.json.{Format, JsPath} +import xyz.driver.pdsuicommon.domain.LongId import xyz.driver.pdsuidomain.entities.InterventionType -final case class ApiInterventionType(id: Long, name: String) +final case class ApiInterventionType(id: Long, name: String) { + + def toDomain = InterventionType(id = LongId[InterventionType](id), name = name) +} object ApiInterventionType { diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/studydesign/ApiStudyDesign.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/studydesign/ApiStudyDesign.scala index 26c7352..1e9a226 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/studydesign/ApiStudyDesign.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/studydesign/ApiStudyDesign.scala @@ -3,8 +3,12 @@ package xyz.driver.pdsuidomain.formats.json.studydesign import xyz.driver.pdsuidomain.entities.StudyDesign import play.api.libs.functional.syntax._ import play.api.libs.json.{Format, JsPath} +import xyz.driver.pdsuicommon.domain.LongId -final case class ApiStudyDesign(id: Long, name: String) +final case class ApiStudyDesign(id: Long, name: String) { + + def toDomain = StudyDesign(id = LongId[StudyDesign](id), name = name) +} object ApiStudyDesign { |