Sha256: b9aa5b52af40fa4d5580bebc4f38c111ec161f6b652315d40f3fbd5326e77dab

Contents?: true

Size: 1.07 KB

Versions: 9

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true
module Shipit
  module Api
    class MergeRequestsController < BaseController
      require_permission :read, :stack
      require_permission :deploy, :stack, only: %i(update destroy)

      def index
        render_resources(stack.merge_requests.includes(:head).order(id: :desc))
      end

      def show
        render_resource(stack.merge_requests.find_by!(number: params[:id]))
      end

      def update
        merge_request = MergeRequest.request_merge!(stack, params[:id], current_user)
        if merge_request.waiting?
          head(:accepted)
        elsif merge_request.merged?
          render(status: :method_not_allowed, json: {
            message: "This pull request was already merged.",
          })
        else
          raise "Pull Request is neither waiting nor merged, this should be impossible"
        end
      end

      def destroy
        if merge_request = stack.merge_requests.where(number: params[:id]).first
          merge_request.cancel! if merge_request.waiting?
        end
        head(:no_content)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
shipit-engine-0.39.0 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.38.0 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.37.0 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.36.1 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.36.0 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.35.1 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.35.0 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.34.0 app/controllers/shipit/api/merge_requests_controller.rb
shipit-engine-0.33.0 app/controllers/shipit/api/merge_requests_controller.rb