Commit 482b91d5 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Merge branch 'reduce-diff-with-ee-in-app-services' into 'master'

Reduce remaining diff with EE in app/services

See merge request gitlab-org/gitlab-ce!24968
parents d4b973fd eafe834c
...@@ -2,16 +2,16 @@ ...@@ -2,16 +2,16 @@
module Applications module Applications
class CreateService class CreateService
# rubocop: disable CodeReuse/ActiveRecord attr_reader :current_user, :params
def initialize(current_user, params) def initialize(current_user, params)
@current_user = current_user @current_user = current_user
@params = params.except(:ip_address) @params = params.except(:ip_address) # rubocop: disable CodeReuse/ActiveRecord
end end
# rubocop: enable CodeReuse/ActiveRecord
# EE would override and use `request` arg # EE would override and use `request` arg
def execute(request) def execute(request)
Doorkeeper::Application.create(@params) Doorkeeper::Application.create(params)
end end
end end
end end
...@@ -42,7 +42,7 @@ module ExclusiveLeaseGuard ...@@ -42,7 +42,7 @@ module ExclusiveLeaseGuard
def lease_timeout def lease_timeout
raise NotImplementedError, raise NotImplementedError,
"#{self.class.name} does not implement #{__method__}" "#{self.class.name} does not implement #{__method__}"
end end
def lease_release? def lease_release?
......
# frozen_string_literal: true # frozen_string_literal: true
class CreateBranchService < BaseService class CreateBranchService < BaseService
def execute(branch_name, ref) def execute(branch_name, ref, create_master_if_empty: true)
create_master_branch if project.empty_repo? create_master_branch if create_master_if_empty && project.empty_repo?
result = ValidateNewBranchService.new(project, current_user) result = ValidateNewBranchService.new(project, current_user)
.execute(branch_name) .execute(branch_name)
......
...@@ -2,10 +2,11 @@ ...@@ -2,10 +2,11 @@
module Emails module Emails
class BaseService class BaseService
attr_reader :current_user attr_reader :current_user, :params, :user
def initialize(current_user, params = {}) def initialize(current_user, params = {})
@current_user, @params = current_user, params.dup @current_user = current_user
@params = params.dup
@user = params.delete(:user) @user = params.delete(:user)
end end
end end
......
...@@ -3,12 +3,11 @@ ...@@ -3,12 +3,11 @@
module Emails module Emails
class CreateService < ::Emails::BaseService class CreateService < ::Emails::BaseService
def execute(extra_params = {}) def execute(extra_params = {})
skip_confirmation = @params.delete(:skip_confirmation) skip_confirmation = params.delete(:skip_confirmation)
email = @user.emails.create(@params.merge(extra_params)) user.emails.create(params.merge(extra_params)).tap do |email|
email&.confirm if skip_confirmation && current_user.admin?
email&.confirm if skip_confirmation && current_user.admin? end
email
end end
end end
end end
...@@ -140,7 +140,7 @@ class GitPushService < BaseService ...@@ -140,7 +140,7 @@ class GitPushService < BaseService
.perform_async(project.id, current_user.id, params[:oldrev], params[:newrev], params[:ref]) .perform_async(project.id, current_user.id, params[:oldrev], params[:newrev], params[:ref])
EventCreateService.new.push(project, current_user, build_push_data) EventCreateService.new.push(project, current_user, build_push_data)
Ci::CreatePipelineService.new(project, current_user, build_push_data).execute(:push) Ci::CreatePipelineService.new(project, current_user, build_push_data).execute(:push, pipeline_options)
project.execute_hooks(build_push_data.dup, :push_hooks) project.execute_hooks(build_push_data.dup, :push_hooks)
project.execute_services(build_push_data.dup, :push_hooks) project.execute_services(build_push_data.dup, :push_hooks)
...@@ -231,4 +231,10 @@ class GitPushService < BaseService ...@@ -231,4 +231,10 @@ class GitPushService < BaseService
def last_pushed_commits def last_pushed_commits
@last_pushed_commits ||= @push_commits.last(PROCESS_COMMIT_LIMIT) @last_pushed_commits ||= @push_commits.last(PROCESS_COMMIT_LIMIT)
end end
private
def pipeline_options
{} # to be overriden in EE
end
end end
...@@ -10,7 +10,7 @@ class GitTagPushService < BaseService ...@@ -10,7 +10,7 @@ class GitTagPushService < BaseService
@push_data = build_push_data @push_data = build_push_data
EventCreateService.new.push(project, current_user, push_data) EventCreateService.new.push(project, current_user, push_data)
Ci::CreatePipelineService.new(project, current_user, push_data).execute(:push) Ci::CreatePipelineService.new(project, current_user, push_data).execute(:push, pipeline_options)
SystemHooksService.new.execute_hooks(build_system_push_data, :tag_push_hooks) SystemHooksService.new.execute_hooks(build_system_push_data, :tag_push_hooks)
project.execute_hooks(push_data.dup, :tag_push_hooks) project.execute_hooks(push_data.dup, :tag_push_hooks)
...@@ -59,4 +59,8 @@ class GitTagPushService < BaseService ...@@ -59,4 +59,8 @@ class GitTagPushService < BaseService
[], [],
'') '')
end end
def pipeline_options
{} # to be overriden in EE
end
end end
...@@ -57,9 +57,11 @@ module Issues ...@@ -57,9 +57,11 @@ module Issues
end end
def issue_params def issue_params
@issue_params ||= issue_params_with_info_from_discussions.merge(whitelisted_issue_params) @issue_params ||= build_issue_params
end end
private
def whitelisted_issue_params def whitelisted_issue_params
if can?(current_user, :admin_issue, project) if can?(current_user, :admin_issue, project)
params.slice(:title, :description, :milestone_id) params.slice(:title, :description, :milestone_id)
...@@ -67,5 +69,9 @@ module Issues ...@@ -67,5 +69,9 @@ module Issues
params.slice(:title, :description) params.slice(:title, :description)
end end
end end
def build_issue_params
issue_params_with_info_from_discussions.merge(whitelisted_issue_params)
end
end end
end end
...@@ -7,9 +7,14 @@ module Notes ...@@ -7,9 +7,14 @@ module Notes
'MergeRequest' => MergeRequests::UpdateService, 'MergeRequest' => MergeRequests::UpdateService,
'Commit' => Commits::TagService 'Commit' => Commits::TagService
}.freeze }.freeze
private_constant :UPDATE_SERVICES
def self.update_services
UPDATE_SERVICES
end
def self.noteable_update_service(note) def self.noteable_update_service(note)
UPDATE_SERVICES[note.noteable_type] update_services[note.noteable_type]
end end
def self.supported?(note) def self.supported?(note)
......
...@@ -249,6 +249,7 @@ module NotificationRecipientService ...@@ -249,6 +249,7 @@ module NotificationRecipientService
attr_reader :action attr_reader :action
attr_reader :previous_assignee attr_reader :previous_assignee
attr_reader :skip_current_user attr_reader :skip_current_user
def initialize(target, current_user, action:, custom_action: nil, previous_assignee: nil, skip_current_user: true) def initialize(target, current_user, action:, custom_action: nil, previous_assignee: nil, skip_current_user: true)
@target = target @target = target
@current_user = current_user @current_user = current_user
...@@ -258,9 +259,13 @@ module NotificationRecipientService ...@@ -258,9 +259,13 @@ module NotificationRecipientService
@skip_current_user = skip_current_user @skip_current_user = skip_current_user
end end
def add_watchers
add_project_watchers
end
def build! def build!
add_participants(current_user) add_participants(current_user)
add_project_watchers add_watchers
add_custom_notifications add_custom_notifications
# Re-assign is considered as a mention of the new assignee # Re-assign is considered as a mention of the new assignee
......
...@@ -3,16 +3,15 @@ ...@@ -3,16 +3,15 @@
module ProtectedBranches module ProtectedBranches
class ApiService < BaseService class ApiService < BaseService
def create def create
@push_params = AccessLevelParams.new(:push, params) ::ProtectedBranches::CreateService.new(@project, @current_user, protected_branch_params).execute
@merge_params = AccessLevelParams.new(:merge, params) end
protected_branch_params = { def protected_branch_params
{
name: params[:name], name: params[:name],
push_access_levels_attributes: @push_params.access_levels, push_access_levels_attributes: AccessLevelParams.new(:push, params).access_levels,
merge_access_levels_attributes: @merge_params.access_levels merge_access_levels_attributes: AccessLevelParams.new(:merge, params).access_levels
} }
::ProtectedBranches::CreateService.new(@project, @current_user, protected_branch_params).execute
end end
end end
end end
...@@ -6,30 +6,31 @@ ...@@ -6,30 +6,31 @@
# lives in this service. # lives in this service.
module ProtectedBranches module ProtectedBranches
class LegacyApiUpdateService < BaseService class LegacyApiUpdateService < BaseService
attr_reader :protected_branch, :developers_can_push, :developers_can_merge
def execute(protected_branch) def execute(protected_branch)
@protected_branch = protected_branch
@developers_can_push = params.delete(:developers_can_push) @developers_can_push = params.delete(:developers_can_push)
@developers_can_merge = params.delete(:developers_can_merge) @developers_can_merge = params.delete(:developers_can_merge)
@protected_branch = protected_branch
protected_branch.transaction do protected_branch.transaction do
delete_redundant_access_levels delete_redundant_access_levels
case @developers_can_push case developers_can_push
when true when true
params[:push_access_levels_attributes] = [{ access_level: Gitlab::Access::DEVELOPER }] params[:push_access_levels_attributes] = [{ access_level: Gitlab::Access::DEVELOPER }]
when false when false
params[:push_access_levels_attributes] = [{ access_level: Gitlab::Access::MAINTAINER }] params[:push_access_levels_attributes] = [{ access_level: Gitlab::Access::MAINTAINER }]
end end
case @developers_can_merge case developers_can_merge
when true when true
params[:merge_access_levels_attributes] = [{ access_level: Gitlab::Access::DEVELOPER }] params[:merge_access_levels_attributes] = [{ access_level: Gitlab::Access::DEVELOPER }]
when false when false
params[:merge_access_levels_attributes] = [{ access_level: Gitlab::Access::MAINTAINER }] params[:merge_access_levels_attributes] = [{ access_level: Gitlab::Access::MAINTAINER }]
end end
service = ProtectedBranches::UpdateService.new(@project, @current_user, @params) service = ProtectedBranches::UpdateService.new(project, current_user, params)
service.execute(protected_branch) service.execute(protected_branch)
end end
end end
...@@ -37,12 +38,12 @@ module ProtectedBranches ...@@ -37,12 +38,12 @@ module ProtectedBranches
private private
def delete_redundant_access_levels def delete_redundant_access_levels
unless @developers_can_merge.nil? unless developers_can_merge.nil?
@protected_branch.merge_access_levels.destroy_all # rubocop: disable DestroyAll protected_branch.merge_access_levels.destroy_all # rubocop: disable DestroyAll
end end
unless @developers_can_push.nil? unless developers_can_push.nil?
@protected_branch.push_access_levels.destroy_all # rubocop: disable DestroyAll protected_branch.push_access_levels.destroy_all # rubocop: disable DestroyAll
end end
end end
end end
......
...@@ -10,6 +10,7 @@ namespace :dev do ...@@ -10,6 +10,7 @@ namespace :dev do
desc "GitLab | Eager load application" desc "GitLab | Eager load application"
task load: :environment do task load: :environment do
Rails.configuration.eager_load = true
Rails.application.eager_load! Rails.application.eager_load!
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment