blob: b5955848468aee93b070a2f7756851bc5a3014a8 (
plain) (
tree)
|
|
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]
}
|