diff options
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala b/src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala new file mode 100644 index 0000000..4417a54 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/services/ScrapedTrialsService.scala @@ -0,0 +1,54 @@ +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 + + 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 { + case class TrialRawEntity(rawTrial: Option[ScrapedTrial]) extends GetRawTrialOptReply + } + + sealed trait GetAllRawTrialsExceptReply + object GetAllRawTrialsExceptReply { + case class MultipleRawTrials(rawTrials: Seq[ScrapedTrial]) + extends GetAllRawTrialsExceptReply + } + + sealed trait GetHtmlForReply + object GetHtmlForReply { + type TrialHtmlMap = Map[String, String] + + /** + * @param trialHtmlMap nctId -> html + */ + 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] +} |