diff options
author | vlad <vlad@driver.xyz> | 2017-10-05 00:03:22 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-10-05 00:03:22 -0700 |
commit | 7d6376873a5bdeca2c9a67f0a0db99faa78b5967 (patch) | |
tree | 66e2eb2ee93d3aff2345d7e2c1ea80eaa407cd6b /src/main/scala | |
parent | 7f1cbe3d1d34a6fc65e5e506a40a3b882c3fdb74 (diff) | |
download | rest-query-7d6376873a5bdeca2c9a67f0a0db99faa78b5967.tar.gz rest-query-7d6376873a5bdeca2c9a67f0a0db99faa78b5967.tar.bz2 rest-query-7d6376873a5bdeca2c9a67f0a0db99faa78b5967.zip |
Support for exporting multiple trialsv0.5.10
Diffstat (limited to 'src/main/scala')
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")) |