Improve update pull request query

commitIdFrom and commitIdTo columns update by one query.
This commit is contained in:
Tomofumi Tanaka
2014-05-02 19:55:49 +09:00
parent 642e8bbb7c
commit dc21e8388e
2 changed files with 5 additions and 10 deletions

View File

@@ -3,7 +3,6 @@ package service
import scala.slick.driver.H2Driver.simple._ import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession import Database.threadLocalSession
import model._ import model._
import util.ControlUtil._
trait PullRequestService { self: IssuesService => trait PullRequestService { self: IssuesService =>
import PullRequestService._ import PullRequestService._
@@ -15,11 +14,10 @@ trait PullRequestService { self: IssuesService =>
} }
} }
def updateCommitIdTo(owner: String, repository: String, issueId: Int, commitIdTo: String): Unit = def updateCommitId(owner: String, repository: String, issueId: Int, commitIdTo: String, commitIdFrom: String): Unit =
Query(PullRequests).filter(_.byPrimaryKey(owner, repository, issueId)).map(_.commitIdTo).update(commitIdTo) Query(PullRequests).filter(_.byPrimaryKey(owner, repository, issueId))
.map(pr => pr.commitIdTo ~ pr.commitIdFrom)
def updateCommitIdFrom(owner: String, repository: String, issueId: Int, commitIdFrom: String): Unit = .update((commitIdTo, commitIdFrom))
Query(PullRequests).filter(_.byPrimaryKey(owner, repository, issueId)).map(_.commitIdFrom).update(commitIdFrom)
def getPullRequestCountGroupByUser(closed: Boolean, owner: String, repository: Option[String]): List[PullRequestCount] = def getPullRequestCountGroupByUser(closed: Boolean, owner: String, repository: Option[String]): List[PullRequestCount] =
Query(PullRequests) Query(PullRequests)

View File

@@ -226,13 +226,10 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl:
.call .call
val commitIdTo = oldGit.getRepository.resolve(s"refs/pull/${pullreq.issueId}/head").getName val commitIdTo = oldGit.getRepository.resolve(s"refs/pull/${pullreq.issueId}/head").getName
updateCommitIdTo(pullreq.userName, pullreq.repositoryName, pullreq.issueId, commitIdTo)
val commitIdFrom = JGitUtil.getForkedCommitId(oldGit, newGit, val commitIdFrom = JGitUtil.getForkedCommitId(oldGit, newGit,
pullreq.userName, pullreq.repositoryName, pullreq.branch, pullreq.userName, pullreq.repositoryName, pullreq.branch,
pullreq.requestUserName, pullreq.requestRepositoryName, pullreq.requestBranch) pullreq.requestUserName, pullreq.requestRepositoryName, pullreq.requestBranch)
// TODO(tanacasino): commitIdFrom and commitIdTo should be updated by one query... updateCommitId(pullreq.userName, pullreq.repositoryName, pullreq.issueId, commitIdTo, commitIdFrom)
updateCommitIdFrom(pullreq.userName, pullreq.repositoryName, pullreq.issueId, commitIdFrom)
} }
} }
} }