(refs #1271)Add merged_by property

This commit is contained in:
Naoki Takezoe
2016-12-10 02:25:39 +09:00
parent 0c2283ce28
commit f354b9cfd7
4 changed files with 56 additions and 27 deletions

View File

@@ -17,6 +17,7 @@ case class ApiPullRequest(
mergeable: Option[Boolean],
merged: Boolean,
merged_at: Option[Date],
merged_by: Option[ApiUser],
title: String,
body: String,
user: ApiUser) {
@@ -34,22 +35,27 @@ case class ApiPullRequest(
object ApiPullRequest{
def apply(issue: Issue, pullRequest: PullRequest, headRepo: ApiRepository, baseRepo: ApiRepository, user: ApiUser,
/*mergeable: Boolean,*/ merged: Boolean, mergedAt: Option[Date]): ApiPullRequest =
/*mergeable: Boolean,*/ merged: Boolean, mergedAt: Option[Date], mergedBy: Option[ApiUser]): ApiPullRequest =
ApiPullRequest(
number = issue.issueId,
updated_at = issue.updatedDate,
created_at = issue.registeredDate,
head = Commit(
sha = pullRequest.commitIdTo,
ref = pullRequest.requestBranch,
repo = headRepo)(issue.userName),
sha = pullRequest.commitIdTo,
ref = pullRequest.requestBranch,
repo = headRepo,
baseOwner = issue.userName
),
base = Commit(
sha = pullRequest.commitIdFrom,
ref = pullRequest.branch,
repo = baseRepo)(issue.userName),
sha = pullRequest.commitIdFrom,
ref = pullRequest.branch,
repo = baseRepo,
baseOwner = issue.userName
),
mergeable = None, // TODO: need check mergeable.
merged = merged,
merged_at = mergedAt,
merged_by = mergedBy,
title = issue.title,
body = issue.content.getOrElse(""),
user = user
@@ -58,7 +64,8 @@ object ApiPullRequest{
case class Commit(
sha: String,
ref: String,
repo: ApiRepository)(baseOwner:String){
repo: ApiRepository,
baseOwner:String){
val label = if( baseOwner == repo.owner.login ){ ref }else{ s"${repo.owner.login}:${ref}" }
val user = repo.owner
}

View File

@@ -407,7 +407,7 @@ trait ApiControllerBase extends ControllerBase {
JsonFormat(issues.map { case (issue, issueUser, commentCount, pullRequest, headRepo, headOwner) =>
val comments = getCommentsForApi(repository.owner, repository.name, issue.issueId)
val mergedComment = getMergedComment(getCommentsForApi(repository.owner, repository.name, issue.issueId))
ApiPullRequest(
issue = issue,
@@ -415,8 +415,9 @@ trait ApiControllerBase extends ControllerBase {
headRepo = ApiRepository(headRepo, ApiUser(headOwner)),
baseRepo = ApiRepository(repository, ApiUser(baseOwner)),
user = ApiUser(issueUser),
merged = comments.exists { case (comment, _, _) => comment.action == "merged" },
mergedAt = comments.collectFirst { case (comment, _, _) if(comment.action == "merged") => comment.registeredDate }
merged = mergedComment.isDefined,
mergedAt = mergedComment.map { case (comment, _) => comment.registeredDate },
mergedBy = mergedComment.map { case (_, account) => ApiUser(account) }
)
})
})
@@ -434,7 +435,7 @@ trait ApiControllerBase extends ControllerBase {
issueUser <- users.get(issue.openedUserName)
headRepo <- getRepository(pullRequest.requestUserName, pullRequest.requestRepositoryName)
} yield {
val comments = getCommentsForApi(repository.owner, repository.name, issueId)
val mergedComment = getMergedComment(getCommentsForApi(repository.owner, repository.name, issue.issueId))
JsonFormat(ApiPullRequest(
issue = issue,
@@ -442,8 +443,9 @@ trait ApiControllerBase extends ControllerBase {
headRepo = ApiRepository(headRepo, ApiUser(headOwner)),
baseRepo = ApiRepository(repository, ApiUser(baseOwner)),
user = ApiUser(issueUser),
merged = comments.exists { case (comment, _, _) => comment.action == "merged" },
mergedAt = comments.collectFirst { case (comment, _, _) if(comment.action == "merged") => comment.registeredDate }
merged = mergedComment.isDefined,
mergedAt = mergedComment.map { case (comment, _) => comment.registeredDate },
mergedBy = mergedComment.map { case (_, account) => ApiUser(account) }
))
}) getOrElse NotFound()
})

View File

@@ -34,6 +34,10 @@ trait IssuesService {
.map{ case ((t1, t2), t3) => (t1, t2, t3) }
.list
def getMergedComment(comments: List[(IssueComment, Account, Issue)]): Option[(IssueComment, Account)] = {
comments.collectFirst { case (comment, account, _) if comment.action == "merged" => (comment, account) }
}
def getComment(owner: String, repository: String, commentId: String)(implicit s: Session) =
if (commentId forall (_.isDigit))
IssueComments filter { t =>

View File

@@ -192,7 +192,7 @@ trait WebHookPullRequestService extends WebHookService {
issueUser <- users.get(issue.openedUserName)
headRepo <- getRepository(pullRequest.requestUserName, pullRequest.requestRepositoryName)
} yield {
val comments = getCommentsForApi(repository.owner, repository.name, issueId)
val mergedComment = getMergedComment(getCommentsForApi(repository.owner, repository.name, issueId))
WebHookPullRequestPayload(
action = action,
@@ -204,8 +204,9 @@ trait WebHookPullRequestService extends WebHookService {
baseRepository = repository,
baseOwner = baseOwner,
sender = sender,
merged = comments.exists { case (comment, _, _) => comment.action == "merged" },
mergedAt = comments.collectFirst { case (comment, _, _) if(comment.action == "merged") => comment.registeredDate }
merged = mergedComment.isDefined,
mergedAt = mergedComment.map { case (comment, _) => comment.registeredDate },
mergedBy = mergedComment.map { case (_, account) => ApiUser(account) }
)
}
}
@@ -236,7 +237,7 @@ trait WebHookPullRequestService extends WebHookService {
((issue, issueUser, pullRequest, baseOwner, headOwner), webHooks) <- getPullRequestsByRequestForWebhook(requestRepository.owner, requestRepository.name, requestBranch)
baseRepo <- getRepository(pullRequest.userName, pullRequest.repositoryName)
} yield {
val comments = getCommentsForApi(baseRepo.owner, baseRepo.name, issue.issueId)
val mergedComment = getMergedComment(getCommentsForApi(baseRepo.owner, baseRepo.name, issue.issueId))
val payload = WebHookPullRequestPayload(
action = action,
@@ -248,8 +249,9 @@ trait WebHookPullRequestService extends WebHookService {
baseRepository = baseRepo,
baseOwner = baseOwner,
sender = sender,
merged = comments.exists { case (comment, _, _) => comment.action == "merged" },
mergedAt = comments.collectFirst { case (comment, _, _) if(comment.action == "merged") => comment.registeredDate }
merged = mergedComment.isDefined,
mergedAt = mergedComment.map { case (comment, _) => comment.registeredDate },
mergedBy = mergedComment.map { case (_, account) => ApiUser(account) }
)
callWebHook(WebHook.PullRequest, webHooks, payload)
@@ -271,7 +273,7 @@ trait WebHookPullRequestReviewCommentService extends WebHookService {
issueUser <- users.get(issue.openedUserName)
headRepo <- getRepository(pullRequest.requestUserName, pullRequest.requestRepositoryName)
} yield {
val comments = getCommentsForApi(repository.owner, repository.name, issue.issueId)
val mergedComment = getMergedComment(getCommentsForApi(repository.owner, repository.name, issue.issueId))
WebHookPullRequestReviewCommentPayload(
action = action,
@@ -284,8 +286,9 @@ trait WebHookPullRequestReviewCommentService extends WebHookService {
baseRepository = repository,
baseOwner = baseOwner,
sender = sender,
merged = comments.exists { case (comment, _, _) => comment.action == "merged" },
mergedAt = comments.collectFirst { case (comment, _, _) if(comment.action == "merged") => comment.registeredDate }
merged = mergedComment.isDefined,
mergedAt = mergedComment.map { case (comment, _) => comment.registeredDate },
mergedBy = mergedComment.map { case (_, account) => ApiUser(account) }
)
}
}
@@ -386,11 +389,22 @@ object WebHookService {
baseOwner: Account,
sender: Account,
merged: Boolean,
mergedAt: Option[Date]): WebHookPullRequestPayload = {
mergedAt: Option[Date],
mergedBy: Option[ApiUser]): WebHookPullRequestPayload = {
val headRepoPayload = ApiRepository(headRepository, headOwner)
val baseRepoPayload = ApiRepository(baseRepository, baseOwner)
val senderPayload = ApiUser(sender)
val pr = ApiPullRequest(issue, pullRequest, headRepoPayload, baseRepoPayload, ApiUser(issueUser), merged, mergedAt)
val pr = ApiPullRequest(
issue = issue,
pullRequest = pullRequest,
headRepo = headRepoPayload,
baseRepo = baseRepoPayload,
user = ApiUser(issueUser),
merged = merged,
mergedAt = mergedAt,
mergedBy = mergedBy
)
WebHookPullRequestPayload(
action = action,
@@ -450,7 +464,8 @@ object WebHookService {
baseOwner: Account,
sender: Account,
merged: Boolean,
mergedAt: Option[Date]
mergedAt: Option[Date],
mergedBy: Option[ApiUser]
) : WebHookPullRequestReviewCommentPayload = {
val headRepoPayload = ApiRepository(headRepository, headOwner)
val baseRepoPayload = ApiRepository(baseRepository, baseOwner)
@@ -471,7 +486,8 @@ object WebHookService {
baseRepo = baseRepoPayload,
user = ApiUser(issueUser),
merged = merged,
mergedAt = mergedAt
mergedAt = mergedAt,
mergedBy = mergedBy
),
repository = baseRepoPayload,
sender = senderPayload)