diff options
Diffstat (limited to 'app/workers/issuable_export_csv_worker.rb')
-rw-r--r-- | app/workers/issuable_export_csv_worker.rb | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/app/workers/issuable_export_csv_worker.rb b/app/workers/issuable_export_csv_worker.rb index 1c5fab8c4c0..d5e3a86eac1 100644 --- a/app/workers/issuable_export_csv_worker.rb +++ b/app/workers/issuable_export_csv_worker.rb @@ -25,7 +25,13 @@ class IssuableExportCsvWorker # rubocop:disable Scalability/IdempotentWorker def export_service(type, user, project, params) issuable_classes = issuable_classes_for(type.to_sym) issuables = issuable_classes[:finder].new(user, parse_params(params, project.id, type)).execute - issuable_classes[:service].new(issuables, project) + + if type.to_sym == :issue # issues do not support field selection for export + issuable_classes[:service].new(issuables, project, user) + else + fields = params.with_indifferent_access.delete(:selected_fields) || [] + issuable_classes[:service].new(issuables, project, fields) + end end def issuable_classes_for(type) @@ -34,6 +40,8 @@ class IssuableExportCsvWorker # rubocop:disable Scalability/IdempotentWorker { finder: IssuesFinder, service: Issues::ExportCsvService } when :merge_request { finder: MergeRequestsFinder, service: MergeRequests::ExportCsvService } + when :work_item + { finder: WorkItems::WorkItemsFinder, service: WorkItems::ExportCsvService } else raise ArgumentError, type_error_message(type) end @@ -47,7 +55,13 @@ class IssuableExportCsvWorker # rubocop:disable Scalability/IdempotentWorker end def type_error_message(type) - "Type parameter must be :issue or :merge_request, it was #{type}" + types_sentence = allowed_types.to_sentence(last_word_connector: ' or ') + + "Type parameter must be #{types_sentence}, it was #{type}" + end + + def allowed_types + %w[:issue :merge_request :work_item] end end |