MiniDigger/Hangar

View on GitHub
ore/app/models/querymodels/queueEntry.scala

Summary

Maintainability
A
3 hrs
Test Coverage
package models.querymodels
import java.time.Instant

import ore.data.project.ProjectNamespace
import ore.models.user.User
import ore.data.Color
import ore.db.DbRef

case class UnsortedQueueEntry(
    namespace: ProjectNamespace,
    projectName: String,
    versionString: String,
    versionCreatedAt: Instant,
    channelName: String,
    channelColor: Color,
    versionAuthor: Option[String],
    reviewerId: Option[DbRef[User]],
    reviewerName: Option[String],
    reviewStarted: Option[Instant],
    reviewEnded: Option[Instant]
) {

  def sort: Either[ReviewedQueueEntry, NotStartedQueueEntry] =
    if (reviewerId.isDefined) {
      Left(
        ReviewedQueueEntry(
          namespace,
          projectName,
          versionString,
          versionCreatedAt,
          channelName,
          channelColor,
          versionAuthor,
          reviewerId.get,
          reviewerName.get,
          reviewStarted.get,
          reviewEnded
        )
      )
    } else {
      Right(
        NotStartedQueueEntry(
          namespace,
          projectName,
          versionString,
          versionCreatedAt,
          channelName,
          channelColor,
          versionAuthor
        )
      )
    }
}

case class ReviewedQueueEntry(
    namespace: ProjectNamespace,
    projectName: String,
    versionString: String,
    versionCreatedAt: Instant,
    channelName: String,
    channelColor: Color,
    versionAuthor: Option[String],
    reviewerId: DbRef[User],
    reviewerName: String,
    reviewStarted: Instant,
    reviewEnded: Option[Instant]
) {

  def isUnfinished: Boolean = reviewEnded.nonEmpty
}

case class NotStartedQueueEntry(
    namespace: ProjectNamespace,
    projectName: String,
    versionString: String,
    versionCreatedAt: Instant,
    channelName: String,
    channelColor: Color,
    versionAuthor: Option[String]
)