From 5cf6f16bc968ea483168d0956dd557388c72232f Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 8 Jan 2019 19:20:07 +0900 Subject: Simplify release services Add changelog fix --- app/services/releases/concerns.rb | 48 ---------------------- app/services/releases/create_service.rb | 22 +++++++--- app/services/releases/destroy_service.rb | 14 ++++++- app/services/releases/update_service.rb | 14 ++++++- .../unreleased/simplify-release-services.yml | 5 +++ 5 files changed, 48 insertions(+), 55 deletions(-) delete mode 100644 app/services/releases/concerns.rb create mode 100644 changelogs/unreleased/simplify-release-services.yml diff --git a/app/services/releases/concerns.rb b/app/services/releases/concerns.rb deleted file mode 100644 index a04bb8f9e14..00000000000 --- a/app/services/releases/concerns.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -module Releases - module Concerns - extend ActiveSupport::Concern - include Gitlab::Utils::StrongMemoize - - included do - def tag_name - params[:tag] - end - - def ref - params[:ref] - end - - def name - params[:name] - end - - def description - params[:description] - end - - def release - strong_memoize(:release) do - project.releases.find_by_tag(tag_name) - end - end - - def existing_tag - strong_memoize(:existing_tag) do - repository.find_tag(tag_name) - end - end - - def tag_exist? - existing_tag.present? - end - - def repository - strong_memoize(:repository) do - project.repository - end - end - end - end -end diff --git a/app/services/releases/create_service.rb b/app/services/releases/create_service.rb index c6e143d440d..c1d20b9858c 100644 --- a/app/services/releases/create_service.rb +++ b/app/services/releases/create_service.rb @@ -2,7 +2,7 @@ module Releases class CreateService < BaseService - include Releases::Concerns + include Gitlab::Utils::StrongMemoize def execute return error('Access Denied', 403) unless allowed? @@ -22,11 +22,11 @@ module Releases end def create_tag - return error('Ref is not specified', 422) unless ref + return error('Ref is not specified', 422) unless params[:ref] result = Tags::CreateService .new(project, current_user) - .execute(tag_name, ref, nil) + .execute(params[:tag], ref, nil) return result unless result[:status] == :success @@ -39,8 +39,8 @@ module Releases def create_release(tag) release = project.releases.create!( - name: name, - description: description, + name: params[:name], + description: params[:description], author: current_user, tag: tag.name, sha: tag.dereferenced_target.sha, @@ -51,5 +51,17 @@ module Releases rescue => e error(e.message, 400) end + + def release + strong_memoize(:release) do + project.releases.find_by_tag(tag_name) + end + end + + def existing_tag + strong_memoize(:existing_tag) do + project.repository.find_tag(tag_name) + end + end end end diff --git a/app/services/releases/destroy_service.rb b/app/services/releases/destroy_service.rb index 8c2bc3b4e6e..09aa693737d 100644 --- a/app/services/releases/destroy_service.rb +++ b/app/services/releases/destroy_service.rb @@ -2,7 +2,7 @@ module Releases class DestroyService < BaseService - include Releases::Concerns + include Gitlab::Utils::StrongMemoize def execute return error('Tag does not exist', 404) unless existing_tag @@ -21,5 +21,17 @@ module Releases def allowed? Ability.allowed?(current_user, :destroy_release, release) end + + def release + strong_memoize(:release) do + project.releases.find_by_tag(tag_name) + end + end + + def existing_tag + strong_memoize(:existing_tag) do + project.repository.find_tag(tag_name) + end + end end end diff --git a/app/services/releases/update_service.rb b/app/services/releases/update_service.rb index fabfa398c59..e37074e0012 100644 --- a/app/services/releases/update_service.rb +++ b/app/services/releases/update_service.rb @@ -2,7 +2,7 @@ module Releases class UpdateService < BaseService - include Releases::Concerns + include Gitlab::Utils::StrongMemoize def execute return error('Tag does not exist', 404) unless existing_tag @@ -28,5 +28,17 @@ module Releases params.except(:tag).empty? end # rubocop: enable CodeReuse/ActiveRecord + + def release + strong_memoize(:release) do + project.releases.find_by_tag(tag_name) + end + end + + def existing_tag + strong_memoize(:existing_tag) do + project.repository.find_tag(tag_name) + end + end end end diff --git a/changelogs/unreleased/simplify-release-services.yml b/changelogs/unreleased/simplify-release-services.yml new file mode 100644 index 00000000000..f08b0763464 --- /dev/null +++ b/changelogs/unreleased/simplify-release-services.yml @@ -0,0 +1,5 @@ +--- +title: Simplify release services +merge_request: 24224 +author: +type: other -- cgit v1.2.1