diff options
author | Vlad Uspensky <v.uspenskiy@icloud.com> | 2018-01-23 17:37:35 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-23 17:37:35 -0800 |
commit | cf397367e2d8e0da371aae22a2d41578b8f48e44 (patch) | |
tree | 7440d630fea2205102ac7d40995b5588f0cdd3f9 /src/main/scala/xyz/driver/pdsuidomain/services | |
parent | 1fa8b54fee10c09485a2d098ddb5e0013f4205b2 (diff) | |
parent | 61bb1951da84446b7c81ea56884476fa1237a91e (diff) | |
download | rest-query-cf397367e2d8e0da371aae22a2d41578b8f48e44.tar.gz rest-query-cf397367e2d8e0da371aae22a2d41578b8f48e44.tar.bz2 rest-query-cf397367e2d8e0da371aae22a2d41578b8f48e44.zip |
Merge pull request #77 from drivergroup/TRIAL-192v0.15.2
TRIAL-192, TRIAL-159 Trial model simplification to support Trial Sync…
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services')
4 files changed, 40 insertions, 56 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala deleted file mode 100644 index 233495e..0000000 --- a/src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala +++ /dev/null @@ -1,53 +0,0 @@ -package xyz.driver.pdsuidomain.services - -import xyz.driver.pdsuicommon.error.DomainError -import xyz.driver.pdsuidomain.entities.ScrapedTrial - -import scala.concurrent.Future - -object ScrapedTrialsService { - - sealed trait GetRawTrialReply - object GetRawTrialReply { - type Error = GetRawTrialReply with DomainError - - final case class TrialRawEntity(rawTrial: ScrapedTrial) extends GetRawTrialReply - - case object NotFoundError extends GetRawTrialReply with DomainError.NotFoundError { - override def userMessage: String = "Raw clinical trial not found" - } - } - - sealed trait GetRawTrialOptReply - object GetRawTrialOptReply { - final case class TrialRawEntity(rawTrial: Option[ScrapedTrial]) extends GetRawTrialOptReply - } - - sealed trait GetAllRawTrialsExceptReply - object GetAllRawTrialsExceptReply { - final case class MultipleRawTrials(rawTrials: Seq[ScrapedTrial]) extends GetAllRawTrialsExceptReply - } - - sealed trait GetHtmlForReply - object GetHtmlForReply { - type TrialHtmlMap = Map[String, String] - - /** - * @param trialHtmlMap nctId -> html - */ - final case class HtmlMap(trialHtmlMap: TrialHtmlMap) extends GetHtmlForReply - } -} - -trait ScrapedTrialsService { - - import ScrapedTrialsService._ - - def getRawTrial(nctId: String): Future[GetRawTrialReply] - - def getRawTrialOpt(nctId: String): Future[GetRawTrialOptReply] - - def getAllRawTrialsExcept(nctIds: Seq[String], limit: Int): Future[GetAllRawTrialsExceptReply] - - def getHtmlFor(nctIds: Set[String]): Future[GetHtmlForReply] -} diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala index 4d61342..9ae1c10 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/TrialService.scala @@ -12,7 +12,7 @@ import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain.StringId import xyz.driver.pdsuicommon.error.DomainError import xyz.driver.pdsuicommon.logging._ -import xyz.driver.pdsuidomain.entities.Trial +import xyz.driver.pdsuidomain.entities.{Trial, TrialCreationRequest} import xyz.driver.pdsuidomain.entities.export.trial.ExportTrialWithLabels import scala.concurrent.Future @@ -121,6 +121,9 @@ trait TrialService { def getPdfSource(trialId: StringId[Trial])( implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]] + def getHtmlSource(trialId: StringId[Trial])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Source[ByteString, NotUsed]] + def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( @@ -150,4 +153,6 @@ trait TrialService { def unassign(origTrial: Trial)( implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] + def addTrial(trial: TrialCreationRequest)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Trial] } 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 7d44309..221e56c 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/fake/FakeTrialService.scala @@ -13,7 +13,7 @@ import xyz.driver.entities.users.AuthUserInfo import xyz.driver.pdsuicommon.db._ import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import xyz.driver.pdsuidomain.entities.export.trial.{ExportTrialArm, ExportTrialLabelCriterion, ExportTrialWithLabels} -import xyz.driver.pdsuidomain.entities.{Criterion, EligibilityArm, Trial} +import xyz.driver.pdsuidomain.entities._ import xyz.driver.pdsuidomain.services.TrialService import scala.concurrent.Future @@ -52,7 +52,12 @@ class FakeTrialService extends TrialService { def getPdfSource(trialId: StringId[Trial])( implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo] ): Future[Source[ByteString, NotUsed]] = - Future.failed(new NotImplementedError("fake pdf download is not implemented")) + Future.failed(new NotImplementedError("fake PDF download is not implemented")) + + def getHtmlSource(trialId: StringId[Trial])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo] + ): Future[Source[ByteString, NotUsed]] = + Future.failed(new NotImplementedError("fake HTML download is not implemented")) def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, @@ -125,4 +130,7 @@ class FakeTrialService extends TrialService { implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = update(origTrial, origTrial) + def addTrial(newTrial: TrialCreationRequest)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Trial] = + Future.successful(trial) } 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 6650d51..94e1c63 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/services/rest/RestTrialService.scala @@ -73,6 +73,18 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote } } + def getHtmlSource(trialId: StringId[Trial])( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo] + ): Future[Source[ByteString, NotUsed]] = { + val request = HttpRequest(HttpMethods.GET, endpointUri(baseUri, s"/v1/trial/$trialId/source.html")) + for { + response <- transport.sendRequestGetResponse(requestContext)(request) + reply <- apiResponse[HttpEntity](response) + } yield { + reply.dataBytes.mapMaterializedValue(_ => NotUsed) + } + } + def getAll(filter: SearchFilterExpr = SearchFilterExpr.Empty, sorting: Option[Sorting] = None, pagination: Option[Pagination] = None)( @@ -146,4 +158,16 @@ class RestTrialService(transport: ServiceTransport, baseUri: Uri)(implicit prote def unassign(origTrial: Trial)( implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[UpdateReply] = singleAction(origTrial, "unassign") + + override def addTrial(trial: TrialCreationRequest)( + implicit requestContext: AuthorizedServiceRequestContext[AuthUserInfo]): Future[Trial] = { + for { + entity <- Marshal(trial).to[RequestEntity] + request = HttpRequest(HttpMethods.POST, endpointUri(baseUri, s"/v1/trial/${trial.nctId}")).withEntity(entity) + response <- transport.sendRequestGetResponse(requestContext)(request) + reply <- apiResponse[Trial](response) + } yield { + reply + } + } } |