Class: Dsu::Services::EntryGroup::ExporterService

Inherits:
Object
  • Object
show all
Includes:
Dsu::Support::Fileable, Dsu::Support::TransformProjectName
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

Methods included from Dsu::Support::TransformProjectName

transform_project_name

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.

Raises:

  • (ArgumentError)


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 = options
end

Instance Method Details

#callObject



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_pathObject



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