Class: Dsu::Services::EntryGroup::ExporterService
- Inherits:
-
Object
- Object
- Dsu::Services::EntryGroup::ExporterService
- Defined in:
- lib/dsu/services/entry_group/exporter_service.rb
Overview
ExporterService exports entry groups to a CSV file. NOTE: This class exports all entries passed to it. It does not filter entries based on optional options that may be passed to it. Rather, times are used to determine the export file name only.
Constant Summary
Constants included from Dsu::Support::TransformProjectName
Dsu::Support::TransformProjectName::TRANSFORM_PROJECT_NAME_REGEX, Dsu::Support::TransformProjectName::TRANSFORM_PROJECT_NAME_SEPARATOR
Constants included from Dsu::Support::Fileable
Dsu::Support::Fileable::MIGRATION_VERSION_FILE_NAME
Instance Method Summary collapse
- #call ⇒ Object
- #export_file_path ⇒ Object
-
#initialize(project_name:, entry_groups:, options: {}) ⇒ ExporterService
constructor
A new instance of ExporterService.
Methods included from Dsu::Support::TransformProjectName
Methods included from Dsu::Support::Fileable
#backup_folder_for, #config_file_name, #config_folder, #config_path, #current_project_file, #current_project_file_name, #dsu_folder, #entries_file_name, #entries_folder, #entries_path, #gem_dir, #migration_version_folder, #migration_version_path, #project_file_for, #project_folder_for, #projects_folder, #root_folder, #seed_data_dsu_configuration_for, #seed_data_dsu_folder_for, #temp_folder, #theme_file_name, #themes_folder, #themes_path
Constructor Details
#initialize(project_name:, entry_groups:, options: {}) ⇒ ExporterService
Returns a new instance of ExporterService.
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/dsu/services/entry_group/exporter_service.rb', line 19 def initialize(project_name:, entry_groups:, options: {}) raise ArgumentError, 'Argument project_name is blank' if project_name.blank? raise ArgumentError, 'Argument entry_groups is blank' if entry_groups.blank? raise ArgumentError, 'Argument entry_groups are not all valid' unless entry_groups.all?(&:valid?) validate_entry_group_entries_present! entry_groups @project_name = project_name @entry_groups = entry_groups @options = end |
Instance Method Details
#call ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/dsu/services/entry_group/exporter_service.rb', line 31 def call CSV.open(export_file_path, 'w') do |csv| csv << %i[project_name version entry_group entry_no total_entries entry_group_entry] entry_groups.each do |entry_group| export_entry_group(entry_group: entry_group, csv: csv) end end export_file_path end |
#export_file_path ⇒ Object
43 44 45 |
# File 'lib/dsu/services/entry_group/exporter_service.rb', line 43 def export_file_path @export_file_path ||= File.join(temp_folder, export_file_name) end |