Module: ExportManager

Defined in:
lib/export_manager.rb,
lib/export_manager/engine.rb,
lib/export_manager/version.rb,
app/jobs/export_manager/application_job.rb,
app/models/export_manager/application_record.rb,
app/helpers/export_manager/application_helper.rb,
app/mailers/export_manager/application_mailer.rb,
app/models/export_manager/export_custom_query.rb,
lib/generators/export_manager/install_generator.rb,
app/controllers/export_manager/application_controller.rb,
app/controllers/export_manager/export_manager_controller.rb,
app/controllers/export_manager/export_custom_queries_controller.rb

Defined Under Namespace

Modules: ApplicationHelper, Generators Classes: ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, Engine, ExportCustomQueriesController, ExportCustomQuery, ExportManagerController

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.generate_csv(records, columns) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/export_manager.rb', line 6

def self.generate_csv(records, columns)
  CSV.generate(headers: true) do |csv|
    csv << columns.map(&:capitalize)
    records.each do |record|
      csv << columns.map { |column| record.public_send(column) }
    end
  end
end

.generate_excel(records, columns) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/export_manager.rb', line 15

def self.generate_excel(records, columns)
  wb = Axlsx::Package.new
  wb.workbook.add_worksheet(name: "Report") do |sheet|
    sheet.add_row columns

    records.each do |record|
      sheet.add_row columns.map { |column| record.public_send(column) }
    end
  end
  wb.to_stream.read
end

.generate_json(records, columns) ⇒ Object



27
28
29
30
# File 'lib/export_manager.rb', line 27

def self.generate_json(records, columns)
  json_data = records.as_json(only: columns)
  json_data.to_json
end

.generate_xml(records, columns) ⇒ Object



32
33
34
35
# File 'lib/export_manager.rb', line 32

def self.generate_xml(records, columns)
  json_data = records.as_json(only: columns)
  json_data.to_xml(root: "records", skip_types: true)
end