in common/src/main/scala/com/gu/sfl/model/model.scala [47:63]
def nextVersion() = Instant.now().toEpochMilli.toString
def apply(articles: List[SavedArticle]) : SavedArticles = SavedArticles(nextVersion(), articles)
def apply(dirtySavedArticles: DirtySavedArticles) : SavedArticles = SavedArticles(dirtySavedArticles.version, buildArticlesWithDates(dirtySavedArticles))
private def buildArticlesWithDates(dirtySavedArticles: DirtySavedArticles) = {
val startingDate = dirtySavedArticles.articles.flatMap(_.date).headOption.map(_.minusDays(1)).getOrElse(oldDate)
dirtySavedArticles.articles.foldLeft((startingDate, List.empty[SavedArticle])) {
case ((lastGoodDate, clean), dirtySavedArticle) => {
dirtySavedArticle match {
case DirtySavedArticle(Some(id), Some(shortUrl), date, read) => {
val thisDate = date.getOrElse(lastGoodDate.plusSeconds(1))
(thisDate, SavedArticle(id, shortUrl, thisDate, read) :: clean)
}
case _ => (lastGoodDate, clean)
}
}
}._2.reverse
}