openSUSE/open-build-service

View on GitHub
src/api/app/models/concerns/target_project_life_cycle_support.rb

Summary

Maintainability
A
0 mins
Test Coverage
D
69%
# We use this concern on BranchPackageStep and LinkPackageStep, because we need to react to closing and reopening a pull request for example
module TargetProjectLifeCycleSupport
  extend ActiveSupport::Concern

  def destroy_target_project
    return unless target_project

    Pundit.authorize(@token.executor, target_project, :destroy?)

    EventSubscription.where(channel: 'scm', token: token, package: target_package).delete_all
    target_project.destroy
  end

  def restore_target_project
    return if target_project

    project_to_restore = Project.new(name: target_project_name)

    Pundit.authorize(@token.executor, project_to_restore, :create?)

    Project.restore(target_project_name, user: token.executor.login)
    Workflows::ScmEventSubscriptionCreator.new(token, workflow_run, scm_webhook, target_package).call
  end
end