forked from Gitlink/forgeplus
34 lines
833 B
Ruby
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
|