diff options
Diffstat (limited to 'app/services/export_csv/base_service.rb')
-rw-r--r-- | app/services/export_csv/base_service.rb | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/app/services/export_csv/base_service.rb b/app/services/export_csv/base_service.rb index 98ab33d4c33..84d44fd75fc 100644 --- a/app/services/export_csv/base_service.rb +++ b/app/services/export_csv/base_service.rb @@ -5,9 +5,10 @@ module ExportCsv # Target attachment size before base64 encoding TARGET_FILESIZE = 15.megabytes - def initialize(relation, resource_parent) + def initialize(relation, resource_parent, fields = []) @objects = relation @resource_parent = resource_parent + @fields = fields end def csv_data @@ -18,18 +19,25 @@ module ExportCsv raise NotImplementedError end + def invalid_fields + ::ExportCsv::MapExportFieldsService.new(fields, header_to_value_hash).invalid_fields + end + private - attr_reader :resource_parent, :objects + attr_reader :resource_parent, :objects, :fields # rubocop: disable CodeReuse/ActiveRecord def csv_builder - @csv_builder ||= + @csv_builder ||= begin + data_hash = MapExportFieldsService.new(fields, header_to_value_hash).execute + if preload_associations_in_batches? - CsvBuilder.new(objects, header_to_value_hash, associations_to_preload) + CsvBuilder.new(objects, data_hash, associations_to_preload) else - CsvBuilder.new(objects.preload(associations_to_preload), header_to_value_hash, []) + CsvBuilder.new(objects.preload(associations_to_preload), data_hash, []) end + end end # rubocop: enable CodeReuse/ActiveRecord |