説明なし

UtilitiesClass.scala 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package fr.natan.akkastreamfileprocessingapi.service
  2. import akka.stream.scaladsl.{Sink, Source}
  3. import fr.natan.akkastreamfileprocessingapi.datasource.Datasource.{nameBasics, titleBasics, titlePrincipalsBasics}
  4. import fr.natan.akkastreamfileprocessingapi.models.Models.Person
  5. import fr.natan.akkastreamfileprocessingapi.models.ModelsBuilder.buildPersonModel
  6. import fr.natan.akkastreamfileprocessingapi.service.AkkaStreamComponents.{actorSystem, buildSource}
  7. import scala.concurrent.Future
  8. object UtilitiesClass {
  9. def getTvSerieIdByPrimaryTitle(primaryTitle: String): Future[Option[String]] = {
  10. val source: Source[Map[String, String], _] = buildSource(inputFile = titleBasics)
  11. val tvSerieIdFuture: Future[Option[String]] = source
  12. .filter((rowMap: Map[String, String]) => {
  13. rowMap.getOrElse(key = "primaryTitle", default = "") == primaryTitle
  14. })
  15. .map((rowMap: Map[String, String]) => rowMap.get("tconst"))
  16. .runWith(Sink.head)
  17. tvSerieIdFuture
  18. }
  19. def getListOfPersonsIDByTvSerieID(tvSerieIdFuture: Future[Option[String]]): Future[IndexedSeq[Option[String]]] = {
  20. val source: Source[Map[String, String], _] = buildSource(inputFile = titlePrincipalsBasics)
  21. val personsIDsFuture: Future[IndexedSeq[Option[String]]] = source
  22. .filter((rowMaps: Map[String, String]) => {
  23. rowMaps.getOrElse(key = "tconst", default = "") == tvSerieIdFuture.value.get.get.get
  24. })
  25. .map((rowMap: Map[String, String]) => {
  26. rowMap.get(key = "nconst")
  27. })
  28. .runWith(Sink.collection)
  29. personsIDsFuture
  30. }
  31. def getListOfPersonsForTvSerie(listPersonsIDsFuture: Future[IndexedSeq[Option[String]]]): Future[IndexedSeq[Person]] = {
  32. val source: Source[Map[String, String], _] = buildSource(inputFile = nameBasics)
  33. val personsFuture: Future[IndexedSeq[Person]] = source
  34. .filter((rowMaps: Map[String, String]) => {
  35. listPersonsIDsFuture.value.get.get.contains(rowMaps.get(key = "nconst"))
  36. })
  37. .map((rowMap: Map[String, String]) => {
  38. buildPersonModel(rowMap)
  39. })
  40. .runWith(Sink.collection)
  41. personsFuture
  42. }
  43. def getTvSerieIDFuture(tvSerieId: String): Future[Option[String]] = {
  44. val source: Source[Map[String, String], _] = buildSource(inputFile = titlePrincipalsBasics)
  45. val tvSerieIdFuture: Future[Option[String]] = source.
  46. filter((rowMap: Map[String, String]) => rowMap.getOrElse(key = "tconst", default = "") == tvSerieId)
  47. .map((rowMap: Map[String, String]) => rowMap.get(key = "tconst"))
  48. .runWith(Sink.head)
  49. tvSerieIdFuture
  50. }
  51. }

Powered by TurnKey Linux.