diff options
Diffstat (limited to 'lib/bulk_imports/projects/pipelines/project_pipeline.rb')
-rw-r--r-- | lib/bulk_imports/projects/pipelines/project_pipeline.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/bulk_imports/projects/pipelines/project_pipeline.rb b/lib/bulk_imports/projects/pipelines/project_pipeline.rb new file mode 100644 index 00000000000..c9da33fe8e3 --- /dev/null +++ b/lib/bulk_imports/projects/pipelines/project_pipeline.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module BulkImports + module Projects + module Pipelines + class ProjectPipeline + include Pipeline + + abort_on_failure! + + extractor ::BulkImports::Common::Extractors::GraphqlExtractor, query: Graphql::GetProjectQuery + transformer ::BulkImports::Common::Transformers::ProhibitedAttributesTransformer + transformer ::BulkImports::Projects::Transformers::ProjectAttributesTransformer + + def load(context, data) + project = ::Projects::CreateService.new(context.current_user, data).execute + + if project.persisted? + context.entity.update!(project: project) + + project + else + raise(::BulkImports::Error, "Unable to import project #{project.full_path}. #{project.errors.full_messages}.") + end + end + end + end + end +end |