新增:合并请求详情接口

This commit is contained in:
yystopf 2022-07-25 18:23:06 +08:00
parent 5463c22518
commit 3f5754a3a5
6 changed files with 65 additions and 4 deletions

View File

@ -135,4 +135,4 @@ gem 'doorkeeper'
gem 'doorkeeper-jwt'
gem 'gitea-client', '~> 0.10.4'
gem 'gitea-client', '~> 0.10.5'

View File

@ -13,7 +13,6 @@ class Api::V1::Projects::Pulls::ReviewsController < Api::V1::Projects::Pulls::Ba
private
def require_reviewer
puts @pull_request.reviewers.exists?(current_user.id)
return render_forbidden('您没有审查权限,请联系项目管理员') if !current_user.admin? && !@pull_request.reviewers.exists?(current_user.id)
end

View File

@ -9,7 +9,8 @@ class Api::V1::Projects::PullsController < Api::V1::BaseController
before_action :load_pull_request, only: [:show]
def show
@result_object = Api::V1::Projects::Pulls::GetService.call(@project, @pull_request, current_user&.gitea_token)
@last_review = @pull_request.reviews.take
end
private

View File

@ -176,7 +176,7 @@ class PullRequestsController < ApplicationController
@issue_assign_to = @issue.get_assign_user
@gitea_pull = Gitea::PullRequest::GetService.call(@owner.login,
@repository.identifier, @pull_request.gitea_number, current_user&.gitea_token)
@last_review = @pull_request.issue.reviews.take
@last_review = @pull_request.reviews.take
end
def pr_merge

View File

@ -0,0 +1,32 @@
class Api::V1::Projects::Pulls::GetService < ApplicationService
attr_reader :project, :pull_request, :owner, :repo, :index, :token
attr_accessor :gitea_data
def initialize(project, pull_request, token = nil)
@project = project
@pull_request = pull_request
@owner = project&.owner.login
@repo = project&.identifier
@index = pull_request.gitea_number
@token = token
end
def call
load_gitea_data
gitea_data
end
private
def request_params
{
access_token: token
}
end
def load_gitea_data
@gitea_data = $gitea_client.get_repos_pulls_by_owner_repo_index(owner, repo, index, {query: request_params})
# raise Error, '获取合并请求失败!' unless @gitea_data.is_a?(Hash)
end
end

View File

@ -0,0 +1,29 @@
json.partial! "api/v1/projects/pulls/simple_detail", pull: @pull_request
json.merge_base @result_object['merge_base']
json.base_commit_sha @result_object['base']['sha']
json.head_commit_sha @result_object['head']['sha']
json.commit_num @result_object['commit_num']
json.changed_files @result_object['changed_files']
json.is_locked @result_object['is_locked']
json.mergeable @result_object['mergeable'] # 是否能合并
json.merged @result_object['merged']
json.merged_at @result_object['merged_at'].nil? ? '' : render_unix_time( @result_object['merged_at'])
json.merge_commit_sha @result_object['merge_commit_sha']
json.merge_by do
if @result_object['merged_by']
json.partial! 'api/v1/users/commit_user', locals: { user: render_cache_commit_author(@result_object['merged_by']), name: @result_object['merged_by']['login'] }
else
json.nil!
end
end
json.last_review do
if @last_review.present?
json.(@last_review, :id, :commit_id, :content, :status)
json.created_at format_time(@last_review.created_at)
json.reviewer do
json.partial! "api/v1/users/simple_user", user: @last_review.reviewer
end
else
json.nil!
end
end