def apply()

in app/lib/EverythingYouWantToKnowAboutACheckpoint.scala [11:40]


  def apply(pr: PullRequest, snapshot: CheckpointSnapshot, gitRepo: Repository): EverythingYouWantToKnowAboutACheckpoint = {
    val timeBetweenMergeAndSnapshot = java.time.Duration.between(pr.merged_at.get.toInstant, snapshot.time)

    def prCommitsSeenAndNotSeen(siteCommitId: ObjectId): PRCommitVisibility = {
      implicit val repoThreadLocal = gitRepo.getObjectDatabase.threadLocalResources
      implicit val w: RevWalk = new RevWalk(repoThreadLocal.reader())
      val siteCommit = siteCommitId.asRevCommit

      val (prCommitsSeenOnSite, prCommitsNotSeen) = pr.availableTipCommits.partition(prCommit => w.isMergedInto(prCommit.asRevCommit, siteCommit))
      if (prCommitsSeenOnSite.nonEmpty && prCommitsNotSeen.nonEmpty) {
        logger.info(s"prCommitsSeenOnSite=${prCommitsSeenOnSite.map(_.name)} prCommitsNotSeen=${prCommitsNotSeen.map(_.name)}")
      }
      PRCommitVisibility(prCommitsSeenOnSite, prCommitsNotSeen)
    }

    val prVis = for {
      commitIdOpt <- snapshot.commitIdTry.toOption
      siteCommitId <- commitIdOpt
    } yield prCommitsSeenAndNotSeen(siteCommitId)

    val isVisibleOnSite = prVis.exists(_.seen.nonEmpty)

    val currentStatus: PullRequestCheckpointStatus =
      if (isVisibleOnSite) Seen else {
        val overdueThreshold = snapshot.checkpoint.overdueInstantFor(pr)
        if (overdueThreshold.exists(_ isBefore snapshot.time)) Overdue else Pending
      }

    EverythingYouWantToKnowAboutACheckpoint(snapshot, prVis, currentStatus)
  }