diff options
Diffstat (limited to 'app/services/bulk_import_service.rb')
-rw-r--r-- | app/services/bulk_import_service.rb | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/app/services/bulk_import_service.rb b/app/services/bulk_import_service.rb deleted file mode 100644 index 4e13e967dbd..00000000000 --- a/app/services/bulk_import_service.rb +++ /dev/null @@ -1,70 +0,0 @@ -# frozen_string_literal: true - -# Entry point of the BulkImport feature. -# This service receives a Gitlab Instance connection params -# and a list of groups to be imported. -# -# Process topography: -# -# sync | async -# | -# User +--> P1 +----> Pn +---+ -# | ^ | Enqueue new job -# | +-----+ -# -# P1 (sync) -# -# - Create a BulkImport record -# - Create a BulkImport::Entity for each group to be imported -# - Enqueue a BulkImportWorker job (P2) to import the given groups (entities) -# -# Pn (async) -# -# - For each group to be imported (BulkImport::Entity.with_status(:created)) -# - Import the group data -# - Create entities for each subgroup of the imported group -# - Enqueue a BulkImportService job (Pn) to import the new entities (subgroups) -# -class BulkImportService - attr_reader :current_user, :params, :credentials - - def initialize(current_user, params, credentials) - @current_user = current_user - @params = params - @credentials = credentials - end - - def execute - bulk_import = create_bulk_import - - BulkImportWorker.perform_async(bulk_import.id) - - ServiceResponse.success(payload: bulk_import) - rescue ActiveRecord::RecordInvalid => e - ServiceResponse.error( - message: e.message, - http_status: :unprocessable_entity - ) - end - - private - - def create_bulk_import - BulkImport.transaction do - bulk_import = BulkImport.create!(user: current_user, source_type: 'gitlab') - bulk_import.create_configuration!(credentials.slice(:url, :access_token)) - - params.each do |entity| - BulkImports::Entity.create!( - bulk_import: bulk_import, - source_type: entity[:source_type], - source_full_path: entity[:source_full_path], - destination_name: entity[:destination_name], - destination_namespace: entity[:destination_namespace] - ) - end - - bulk_import - end - end -end |