diff options
Diffstat (limited to 'app/services/design_management/save_designs_service.rb')
-rw-r--r-- | app/services/design_management/save_designs_service.rb | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/app/services/design_management/save_designs_service.rb b/app/services/design_management/save_designs_service.rb index a09c19bc885..0446d2f1ee8 100644 --- a/app/services/design_management/save_designs_service.rb +++ b/app/services/design_management/save_designs_service.rb @@ -20,6 +20,7 @@ module DesignManagement uploaded_designs, version = upload_designs! skipped_designs = designs - uploaded_designs + create_events success({ designs: uploaded_designs, version: version, skipped_designs: skipped_designs }) rescue ::ActiveRecord::RecordInvalid => e error(e.message) @@ -47,7 +48,7 @@ module DesignManagement end def build_actions - files.zip(designs).flat_map do |(file, design)| + @actions ||= files.zip(designs).flat_map do |(file, design)| Array.wrap(build_design_action(file, design)) end end @@ -57,7 +58,9 @@ module DesignManagement return if design_unchanged?(design, content) action = new_file?(design) ? :create : :update - on_success { ::Gitlab::UsageDataCounters::DesignsCounter.count(action) } + on_success do + ::Gitlab::UsageDataCounters::DesignsCounter.count(action) + end DesignManagement::DesignAction.new(design, action, content) end @@ -67,6 +70,16 @@ module DesignManagement content == existing_blobs[design]&.data end + def create_events + by_action = @actions.group_by(&:action).transform_values { |grp| grp.map(&:design) } + + event_create_service.save_designs(current_user, **by_action) + end + + def event_create_service + @event_create_service ||= EventCreateService.new + end + def commit_message <<~MSG Updated #{files.size} #{'designs'.pluralize(files.size)} |