aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala17
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala31
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala12
3 files changed, 48 insertions, 12 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala
index 5bd99a8..c6ab2d2 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala
@@ -68,6 +68,20 @@ object TrialService {
extends GetTrialWithLabelsReply with DomainError.AuthorizationError with DefaultAccessDeniedError
}
+ sealed trait GetTrialsWithLabelsReply
+ object GetTrialsWithLabelsReply {
+ type Error = GetTrialsWithLabelsReply with DomainError
+
+ final case class EntityList(xs: Seq[ExportTrialWithLabels]) extends GetTrialsWithLabelsReply
+
+ case object NotFoundError extends GetTrialsWithLabelsReply with DomainError.NotFoundError {
+ def userMessage: String = "Trials for disease are not found"
+ }
+
+ case object AuthorizationError
+ extends GetTrialsWithLabelsReply with DomainError.AuthorizationError with DefaultAccessDeniedError
+ }
+
sealed trait UpdateReply
object UpdateReply {
type Error = UpdateReply with DomainError
@@ -97,6 +111,9 @@ trait TrialService {
def getTrialWithLabels(trialId: StringId[Trial], condition: String)(
implicit requestContext: AuthenticatedRequestContext): Future[GetTrialWithLabelsReply]
+ def getTrialsWithLabels(condition: String)(
+ implicit requestContext: AuthenticatedRequestContext): Future[GetTrialsWithLabelsReply]
+
def getPdfSource(trialId: StringId[Trial])(
implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]]
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
index 9aeb820..cd62d48 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala
@@ -58,19 +58,27 @@ class FakeTrialService extends TrialService {
Future.successful(GetListReply.EntityList(Seq(trial), 1, None))
override def getTrialWithLabels(trialId: StringId[Trial], condition: String)(
- implicit requestContext: AuthenticatedRequestContext): Future[GetTrialWithLabelsReply] = {
- Future.successful(
- GetTrialWithLabelsReply.Entity(ExportTrialWithLabels(
- StringId[Trial]("NCT" + generators.nextInt(999999).toString),
- UuidId[Trial](generators.nextUuid()),
- generators.oneOf("adenocarcinoma", "breast", "prostate"),
- LocalDateTime.now(),
- labelVersion = 1L,
- generators.listOf(new ExportTrialArm(
+ implicit requestContext: AuthenticatedRequestContext): Future[GetTrialWithLabelsReply] =
+ Future.successful(GetTrialWithLabelsReply.Entity(nextExportTrialWithLabels()))
+
+ override def getTrialsWithLabels(condition: String)(
+ implicit requestContext: AuthenticatedRequestContext): Future[GetTrialsWithLabelsReply] =
+ Future.successful(GetTrialsWithLabelsReply.EntityList(generators.seqOf(nextExportTrialWithLabels())))
+
+ private def nextExportTrialWithLabels() =
+ ExportTrialWithLabels(
+ StringId[Trial]("NCT" + generators.nextInt(999999).toString),
+ UuidId[Trial](generators.nextUuid()),
+ generators.oneOf("adenocarcinoma", "breast", "prostate"),
+ LocalDateTime.now(),
+ labelVersion = 1L,
+ generators.listOf(
+ new ExportTrialArm(
LongId[Arm](generators.nextInt(999999).toLong),
generators.nextName().value
)),
- generators.listOf(new ExportTrialLabelCriterion(
+ generators.listOf(
+ new ExportTrialLabelCriterion(
LongId[Criterion](generators.nextInt(999999).toLong),
generators.nextOption(generators.nextBoolean()),
LongId[Label](generators.nextInt(999999).toLong),
@@ -79,8 +87,7 @@ class FakeTrialService extends TrialService {
generators.nextBoolean(),
generators.nextBoolean()
))
- )))
- }
+ )
def update(origTrial: Trial, draftTrial: Trial)(
implicit requestContext: AuthenticatedRequestContext): Future[UpdateReply] =
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
index 7e33919..42f32fc 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala
@@ -16,6 +16,7 @@ import xyz.driver.pdsuidomain.entities.export.trial.ExportTrialWithLabels
import xyz.driver.pdsuidomain.formats.json.ListResponse
import xyz.driver.pdsuidomain.formats.json.trial.ApiTrial
import xyz.driver.pdsuidomain.services.TrialService
+import spray.json.DefaultJsonProtocol._
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import xyz.driver.pdsuidomain.formats.json.sprayformats.export._
@@ -47,6 +48,17 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote
}
}
+ def getTrialsWithLabels(disease: String)(
+ implicit requestContext: AuthenticatedRequestContext): Future[GetTrialsWithLabelsReply] = {
+ val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/export/trial/$disease"))
+ for {
+ response <- transport.sendRequestGetResponse(requestContext)(request)
+ reply <- apiResponse[Seq[ExportTrialWithLabels]](response)
+ } yield {
+ GetTrialsWithLabelsReply.EntityList(reply)
+ }
+ }
+
def getPdfSource(trialId: StringId[Trial])(
implicit requestContext: AuthenticatedRequestContext): Future[Source[ByteString, NotUsed]] = {
val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/source"))