in src/main/scala/ophan/google/index/checker/Lambda.scala [60:78]
def availabilityFor(contentSummaries: Set[ContentSummary]): Future[Map[String, ContentAvailabilityInGoogleIndex]] = {
val contentSummariesById: Map[String, ContentSummary] = contentSummaries.map(cs => cs.id -> cs).toMap
for {
existingRecordsByCapiId <- dataStore.fetchExistingRecordsFor(contentSummariesById.keySet)
(contentThatNeedsCheckingNow, contentThatDoesNotNeedCheckingRightNow) =
contentSummaries.partition(contentThatNeedsCheckingNowGiven(existingRecordsByCapiId))
updatedAvailabilityReports <- check(contentThatNeedsCheckingNow)
} yield {
println(s"There are ${existingRecordsByCapiId.size}/${contentSummaries.size} existing availability records for content items")
val unchangedRecordsForContentThatIsKnownToBeFine: Map[String, AvailabilityRecord] = {
val idsOfContentThatIsKnownToBeFine = contentThatDoesNotNeedCheckingRightNow.map(_.id)
existingRecordsByCapiId.view.filterKeys(idsOfContentThatIsKnownToBeFine)
}.toMap
(unchangedRecordsForContentThatIsKnownToBeFine ++ updatedAvailabilityReports).mapV { record =>
ContentAvailabilityInGoogleIndex(contentSummariesById(record.capiId), record)
}
}
}