forked from Trustie/forgeplus
新增:重新打开pr接口
This commit is contained in:
parent
880f547b3b
commit
6a7174781c
|
@ -6,13 +6,22 @@ class Api::V1::Projects::Pulls::PullsController < Api::V1::BaseController
|
|||
@pulls = kaminari_paginate(@pulls)
|
||||
end
|
||||
|
||||
before_action :load_pull_request, only: [:show, :files]
|
||||
before_action :load_pull_request, only: [:show, :reopen, :files]
|
||||
|
||||
def show
|
||||
@result_object = Api::V1::Projects::Pulls::GetService.call(@project, @pull_request, current_user&.gitea_token)
|
||||
@last_review = @pull_request.reviews.order(created_at: :desc).take
|
||||
end
|
||||
|
||||
def reopen
|
||||
@result_object = Api::V1::Projects::Pulls::ReopenService.call(@project, @pull_request, current_user)
|
||||
if @result_object
|
||||
render_ok
|
||||
else
|
||||
render_error("合并请求重新打开失败!")
|
||||
end
|
||||
end
|
||||
|
||||
def files
|
||||
if params[:filepath].present?
|
||||
@result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index_filepath(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, CGI.escape(params[:filepath]), {query: {token: current_user&.gitea_token}})
|
||||
|
|
|
@ -144,6 +144,18 @@ class PullRequest < ApplicationRecord
|
|||
"#{Rails.application.config_for(:configuration)['platform_url']}/#{self.project.owner.login}/#{self.project.name}/pulls/#{self.id}"
|
||||
end
|
||||
|
||||
def closed?
|
||||
self.status == CLOSED
|
||||
end
|
||||
|
||||
def merged?
|
||||
self.status == MERGED
|
||||
end
|
||||
|
||||
def opened?
|
||||
self.status == OPEN
|
||||
end
|
||||
|
||||
def pr_status
|
||||
case status
|
||||
when 0
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
class Api::V1::Projects::Pulls::ReopenService < ApplicationService
|
||||
include ActiveModel::Model
|
||||
|
||||
attr_reader :project, :pull_request, :issue, :user
|
||||
|
||||
|
||||
def initialize(project, pull_request, user)
|
||||
@project = project
|
||||
@pull_request = pull_request
|
||||
@issue = pull_request&.issue
|
||||
@user = user
|
||||
end
|
||||
|
||||
def call
|
||||
raise Error, errors.full_messages.join(", ") unless valid?
|
||||
if gitea_change_status
|
||||
@pull_request.update_column(:status, PullRequest::OPEN)
|
||||
@pull_request&.project_trends&.where(action_type: ProjectTrend::CLOSE).destroy_all
|
||||
@issue.update_column(:status_id, IssueStatus::ADD)
|
||||
|
||||
return true
|
||||
else
|
||||
raise Error, 'gitea change status failed'
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def valid?
|
||||
return false if @project.blank? || @pull_request.blank? || @issue.blank? || @user.blank?
|
||||
return false unless @pull_request.closed?
|
||||
return true
|
||||
end
|
||||
|
||||
def gitea_change_status
|
||||
gitea_result = Gitea::PullRequest::ChangeStatusService.call(@project.owner.login, @project.identifier, @pull_request.gitea_number, false, @user&.gitea_token)
|
||||
return true if gitea_result[:status] == :success
|
||||
return false
|
||||
end
|
||||
end
|
|
@ -0,0 +1,38 @@
|
|||
# Get a pull request
|
||||
class Gitea::PullRequest::ChangeStatusService < Gitea::ClientService
|
||||
attr_reader :owner, :repo, :number, :is_closed, :token
|
||||
|
||||
#eq:
|
||||
# Gitea::PullRequest::ChangeStatusService.call(user.login, repository.identifier, pull.gitea_number, true, user.gitea_token)
|
||||
def initialize(owner, repo, number, is_closed, token=nil)
|
||||
@owner = owner
|
||||
@repo = repo
|
||||
@number = number
|
||||
@is_closed = is_closed
|
||||
@token = token
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, request_params, true)
|
||||
status, message, body = render_response(response)
|
||||
json_format(status, message, body)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def request_params
|
||||
Hash.new.merge(token: token, is_closed: is_closed)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{owner}/#{repo}/pulls/#{number}/change_status".freeze
|
||||
end
|
||||
|
||||
def json_format(status, message, body)
|
||||
case status
|
||||
when 204 then success(body)
|
||||
else
|
||||
error(message, status)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -7,6 +7,7 @@ json.commits_count @gitea_pull["commit_num"]
|
|||
json.files_count @gitea_pull["changed_files"]
|
||||
json.comments_count @issue.journals.parent_journals.size
|
||||
json.comments_total_count @issue.get_journals_size
|
||||
json.can_reopen @pull_request.closed?
|
||||
json.assign_user do
|
||||
json.partial! 'users/user_simple', user: @issue_assign_to
|
||||
end
|
||||
|
|
|
@ -203,6 +203,7 @@ defaults format: :json do
|
|||
resources :pulls, module: 'pulls' do
|
||||
member do
|
||||
get :files
|
||||
post :reopen
|
||||
end
|
||||
resources :versions, only: [:index] do
|
||||
member do
|
||||
|
|
Loading…
Reference in New Issue