Sha256: ec17e54a46a9dcf6b7ec76556fe5b4bf239e28301df698adeb8ee2d16ec482b2

Contents?: true

Size: 1.33 KB

Versions: 17

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true

require "csv"

# ExportCsvService
class ExportCsvService
  def self.short_name
    "Documents"
  end

  def self.call(document_ids)
    ActionCable.server.broadcast("export_channel", {progress: 0})

    document_ids = document_ids.flatten
    total = document_ids.size
    count = 0
    slice_count = 100
    csv_file = []

    Rails.logger.debug { "\n\nExportCsvService: #{document_ids.inspect}\n\n" }

    CSV.generate(headers: true) do |_csv|
      Rails.logger.debug do
        "\n\n CSV Fields: #{GeoblacklightAdmin::Schema.instance.exportable_fields.map do |k, _v|
                              k.to_s
                            end} \n\n"
      end

      csv_file << GeoblacklightAdmin::Schema.instance.exportable_fields.map { |k, _v| k.to_s }
      document_ids.each_slice(slice_count) do |slice|
        # Broadcast progress percentage
        count += slice_count
        progress = ((count.to_f / total) * 100).round
        progress = 100 if progress > 100

        ActionCable.server.broadcast("export_channel", {progress: progress})
        slice.each do |doc_id|
          doc = Document.find_by(friendlier_id: doc_id)
          csv_file << doc.to_csv
        rescue NoMethodError
          Rails.logger.debug { "\n\nExport Failed: #{doc_id.inspect}\n\n" }
        end
      end
    end

    csv_file
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
geoblacklight_admin-0.8.0 app/services/export_csv_service.rb
geoblacklight_admin-0.7.1 app/services/export_csv_service.rb
geoblacklight_admin-0.7.0 app/services/export_csv_service.rb
geoblacklight_admin-0.6.3 app/services/export_csv_service.rb
geoblacklight_admin-0.6.2 app/services/export_csv_service.rb
geoblacklight_admin-0.6.1 app/services/export_csv_service.rb
geoblacklight_admin-0.6.0 app/services/export_csv_service.rb
geoblacklight_admin-0.5.1 app/services/export_csv_service.rb
geoblacklight_admin-0.5.0 app/services/export_csv_service.rb
geoblacklight_admin-0.4.2 app/services/export_csv_service.rb
geoblacklight_admin-0.4.1 app/services/export_csv_service.rb
geoblacklight_admin-0.4.0 app/services/export_csv_service.rb
geoblacklight_admin-0.3.2 app/services/export_csv_service.rb
geoblacklight_admin-0.3.1 app/services/export_csv_service.rb
geoblacklight_admin-0.3.0 app/services/export_csv_service.rb
geoblacklight_admin-0.2.1 app/services/export_csv_service.rb
geoblacklight_admin-0.1.0 app/services/export_csv_service.rb