Skip to content
Snippets Groups Projects

Add Sidekiq job for importing CSV requirements async

Files
2
@@ -3,6 +3,7 @@
@@ -3,6 +3,7 @@
module RequirementsManagement
module RequirementsManagement
class ImportRequirementsCsvWorker # rubocop:disable Scalability/IdempotentWorker
class ImportRequirementsCsvWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
include ApplicationWorker
 
include Gitlab::Utils::StrongMemoize
feature_category :requirements_management
feature_category :requirements_management
worker_resource_boundary :cpu
worker_resource_boundary :cpu
@@ -13,14 +14,35 @@ class ImportRequirementsCsvWorker # rubocop:disable Scalability/IdempotentWorker
@@ -13,14 +14,35 @@ class ImportRequirementsCsvWorker # rubocop:disable Scalability/IdempotentWorker
end
end
def perform(current_user_id, project_id, upload_id)
def perform(current_user_id, project_id, upload_id)
@user = User.find(current_user_id)
@user_id = current_user_id
@project = Project.find(project_id)
@project_id = project_id
@upload = Upload.find(upload_id)
@upload_id = upload_id
importer = RequirementsManagement::ImportCsvService.new(@user, @project, @upload.retrieve_uploader)
return unless user && project && upload
importer.execute
@upload.destroy
import
 
end
 
 
private
 
 
attr_reader :user_id, :project_id, :upload_id
 
 
def import
 
RequirementsManagement::ImportCsvService.new(user, project, upload.retrieve_uploader).execute
 
 
upload.destroy
 
end
 
 
def user
 
strong_memoize(:user) { User.find_by_id(user_id) }
 
end
 
 
def project
 
strong_memoize(:project) { Project.find_by_id(project_id) }
 
end
 
 
def upload
 
strong_memoize(:upload) { Upload.find_by_id(upload_id) }
end
end
end
end
end
end
Loading