forgeplus/app/services/pull_requests/close_service.rb

34 lines
833 B
Ruby

class PullRequests::CloseService < ApplicationService
attr_reader :owner, :repo, :pull, :current_user
# eq:
# PullRequests::CloseService.call(owner, repo, pull, current_user)
def initialize(owner, repo, pull, current_user)
@owner = owner
@repo = repo
@pull = pull
@current_user = current_user
end
def call
ActiveRecord::Base.transaction do
return false if close_gitea_pull[:status] != :success
update_pull_status!
return true
end
end
private
def close_gitea_pull
Gitea::PullRequest::CloseService.call(@owner.login, @repo.identifier,
@pull.gitea_number, @pull.base, current_user.gitea_token)
end
def update_pull_status!
@pull.update(status: PullRequest::CLOSED)
@pull.issue.update(status_id: IssueStatus::CLOSED)
end
end