(refs #2)Add opened user filter and count to the pull request list.

This commit is contained in:
takezoe
2013-08-05 18:47:40 +09:00
parent 71d84e7475
commit 6101e141d8
3 changed files with 47 additions and 3 deletions

View File

@@ -6,6 +6,8 @@ import Database.threadLocalSession
import model._
trait PullRequestService { self: IssuesService =>
import PullRequestService._
// implicit val getPullRequestCount = GetResult(r => PullRequestCount(r.<<, r.<<))
def getPullRequest(owner: String, repository: String, issueId: Int): Option[(Issue, PullRequest)] = {
val issue = getIssue(owner, repository, issueId.toString)
@@ -17,6 +19,27 @@ trait PullRequestService { self: IssuesService =>
} else None
}
def getPullRequestCount(closed: Boolean, repository: Option[(String, String)]): List[PullRequestCount] = {
Query(PullRequests)
.innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) }
.filter { case (t1, t2) =>
(t2.closed is closed.bind) &&
(t1.userName is repository.get._1, repository.isDefined) &&
(t1.repositoryName is repository.get._2, repository.isDefined)
}
.groupBy { case (t1, t2) =>
t2.openedUserName
}
.map { case (userName, t) =>
userName ~ t.length
}
.list
.map { x =>
PullRequestCount(x._1, x._2)
}
.sortBy(_.count).reverse
}
def createPullRequest(originUserName: String, originRepositoryName: String, issueId: Int,
originBranch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String,
commitIdFrom: String, commitIdTo: String): Unit =
@@ -34,5 +57,9 @@ trait PullRequestService { self: IssuesService =>
}
object PullRequestService {
val PullRequestLimit = 25
case class PullRequestCount(userName: String, count: Int)
}