summaryrefslogtreecommitdiff
path: root/lib/api/bulk_imports.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/bulk_imports.rb')
-rw-r--r--lib/api/bulk_imports.rb91
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/api/bulk_imports.rb b/lib/api/bulk_imports.rb
new file mode 100644
index 00000000000..189851cee65
--- /dev/null
+++ b/lib/api/bulk_imports.rb
@@ -0,0 +1,91 @@
+# frozen_string_literal: true
+
+module API
+ class BulkImports < ::API::Base
+ include PaginationParams
+
+ feature_category :importers
+
+ helpers do
+ def bulk_imports
+ @bulk_imports ||= ::BulkImports::ImportsFinder.new(user: current_user, status: params[:status]).execute
+ end
+
+ def bulk_import
+ @bulk_import ||= bulk_imports.find(params[:import_id])
+ end
+
+ def bulk_import_entities
+ @bulk_import_entities ||= ::BulkImports::EntitiesFinder.new(user: current_user, bulk_import: bulk_import, status: params[:status]).execute
+ end
+
+ def bulk_import_entity
+ @bulk_import_entity ||= bulk_import_entities.find(params[:entity_id])
+ end
+ end
+
+ before { authenticate! }
+
+ resource :bulk_imports do
+ desc 'List all GitLab Migrations' do
+ detail 'This feature was introduced in GitLab 14.1.'
+ end
+ params do
+ use :pagination
+ optional :status, type: String, values: BulkImport.all_human_statuses,
+ desc: 'Return GitLab Migrations with specified status'
+ end
+ get do
+ present paginate(bulk_imports), with: Entities::BulkImport
+ end
+
+ desc "List all GitLab Migrations' entities" do
+ detail 'This feature was introduced in GitLab 14.1.'
+ end
+ params do
+ use :pagination
+ optional :status, type: String, values: ::BulkImports::Entity.all_human_statuses,
+ desc: "Return all GitLab Migrations' entities with specified status"
+ end
+ get :entities do
+ entities = ::BulkImports::EntitiesFinder.new(user: current_user, status: params[:status]).execute
+
+ present paginate(entities), with: Entities::BulkImports::Entity
+ end
+
+ desc 'Get GitLab Migration details' do
+ detail 'This feature was introduced in GitLab 14.1.'
+ end
+ params do
+ requires :import_id, type: Integer, desc: "The ID of user's GitLab Migration"
+ end
+ get ':import_id' do
+ present bulk_import, with: Entities::BulkImport
+ end
+
+ desc "List GitLab Migration entities" do
+ detail 'This feature was introduced in GitLab 14.1.'
+ end
+ params do
+ requires :import_id, type: Integer, desc: "The ID of user's GitLab Migration"
+ optional :status, type: String, values: ::BulkImports::Entity.all_human_statuses,
+ desc: 'Return import entities with specified status'
+ use :pagination
+ end
+ get ':import_id/entities' do
+ present paginate(bulk_import_entities), with: Entities::BulkImports::Entity
+ end
+
+ desc 'Get GitLab Migration entity details' do
+ detail 'This feature was introduced in GitLab 14.1.'
+ end
+ params do
+ requires :import_id, type: Integer, desc: "The ID of user's GitLab Migration"
+ requires :entity_id, type: Integer, desc: "The ID of GitLab Migration entity"
+ end
+ get ':import_id/entities/:entity_id' do
+ present bulk_import_entity, with: Entities::BulkImports::Entity
+ end
+ end
+ end
+end