in app/com/gu/floodgate/contentsource/ContentSourceApi.scala [87:133]
def reindex(id: String, environment: String, from: Option[String], to: Option[String]) = Action.async {
implicit request =>
def triggerReindex: Future[Result] = {
DateParameters(from, to) match {
case Right(dp: DateParameters) =>
reindexService.reindex(id, environment, dp) map {
case Right(runningJob) =>
logger.info(s"Returning running job for: ${runningJob.contentSourceId}")
Ok(Json.toJson(runningJob))
case Left(customError) => {
logger.warn(
s"Content source with id: $id returned custom error in response to a reindex request: ${customError.message}"
)
BadRequest(Json.toJson(ErrorResponse(customError.message)))
}
}
case Left(error) => {
logger.error(
s"Content source with id: $id returned error in response to a reindex request: ${error.message}"
)
Future.successful(BadRequest(Json.toJson(ErrorResponse(error.message))))
}
}
}
val maybeActor = bulkJobActorsMap.get(environment)
maybeActor match {
case Some(actor) => {
val futureActorStatus = (actor ? IsActorReindexing).mapTo[BulkReindexRequestResult]
futureActorStatus.flatMap {
case _: IsReindexing => {
BulkReindexInProcess(
s"Bulk reindex is in process for content source with id: $id and environment: $environment."
)
Future.successful(Ok(s"""{ "IsBulkReindexing": true}"""))
}
case NotReindexing => triggerReindex
case _ => Future.successful(Ok(s"""{ "IsBulkReindexing": false}"""))
}
}
case None => {
ErrorResponse(s"No actor found for $environment. Running reindex for $id.")
triggerReindex
}
}
}