Class: DesignManagement::CopyDesignCollection::CopyService
- Inherits:
-
DesignService
- Object
- BaseService
- DesignService
- DesignManagement::CopyDesignCollection::CopyService
- Defined in:
- app/services/design_management/copy_design_collection/copy_service.rb
Instance Attribute Summary
Attributes inherited from DesignService
Attributes inherited from BaseService
#current_user, #params, #project
Instance Method Summary collapse
-
#execute ⇒ Object
rubocop: enable CodeReuse/ActiveRecord.
-
#initialize(project, user, params = {}) ⇒ CopyService
constructor
rubocop: disable CodeReuse/ActiveRecord.
Methods inherited from DesignService
#collection, #project, #repository, #target_branch
Methods included from BaseServiceUtility
#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level
Methods included from Gitlab::Allowable
Constructor Details
#initialize(project, user, params = {}) ⇒ CopyService
rubocop: disable CodeReuse/ActiveRecord
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/services/design_management/copy_design_collection/copy_service.rb', line 9 def initialize(project, user, params = {}) super @target_issue = params.fetch(:target_issue) @target_project = @target_issue.project @target_repository = @target_project.design_repository @target_design_collection = @target_issue.design_collection @temporary_branch = "CopyDesignCollectionService_#{SecureRandom.hex}" # The user who triggered the copy may not have permissions to push # to the design repository. @git_user = @target_project.first_owner @designs = DesignManagement::Design.unscoped.where(issue: issue).order(:id).load @versions = DesignManagement::Version.unscoped.where(issue: issue).order(:id).includes(:designs).load @sha_attribute = Gitlab::Database::ShaAttribute.new @shas = [] @event_enum_map = DesignManagement::DesignAction::EVENT_FOR_GITALY_ACTION.invert end |
Instance Method Details
#execute ⇒ Object
rubocop: enable CodeReuse/ActiveRecord
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'app/services/design_management/copy_design_collection/copy_service.rb', line 30 def execute return error('User cannot copy design collection to issue') unless user_can_copy? return error('Target design collection must first be queued') unless target_design_collection.copy_in_progress? return error('Design collection has no designs') if designs.empty? return error('Target design collection already has designs') unless target_design_collection.empty? with_temporary_branch do copy_commits! ApplicationRecord.transaction do design_ids = copy_designs! version_ids = copy_versions! copy_actions!(design_ids, version_ids) link_lfs_files! copy_notes!(design_ids) finalize! end end ServiceResponse.success rescue StandardError => error log_exception(error) target_design_collection.error_copy! error('Designs were unable to be copied successfully') end |