class Lite::Report::Record

Public Instance Methods

export() click to toggle source
# File lib/lite/report/record.rb, line 7
def export
  assign_headers_to_csv_options!
  generate_or_stream_export!
end
import() click to toggle source
# File lib/lite/report/record.rb, line 12
def import
  assert_klass_data_option!
  assign_import_csv_options!

  @data = Lite::Report::Hash.import(@data, csv_options: @csv_options, data_options: @data_options)
                            .each do |row|
                              row.delete(:id) || row.delete('id')
                              (row['created_at'] ||= timestamp) if created_at_timestamp?
                              (row['updated_at'] ||= timestamp) if updated_at_timestamp?
                            end

  klass.insert_all(@data, **@import_options)
end

Private Instance Methods

assert_klass_data_option!() click to toggle source
# File lib/lite/report/record.rb, line 28
def assert_klass_data_option!
  return if klass

  raise ArgumentError, '":klass" data_option is required'
end
assign_export_data!() click to toggle source
# File lib/lite/report/record.rb, line 44
def assign_export_data!
  columns = class_columns(@data)
  @data = if ransack_class?(@data)
            @data.result
          elsif @data.try(:persisted?)
            Array(@data)
          else
            @data
          end

  @data = @data.pluck(*columns).map { |values| columns.zip(values).to_h }
end
assign_headers_to_csv_options!() click to toggle source
# File lib/lite/report/record.rb, line 34
def assign_headers_to_csv_options!
  return unless write_headers?

  @csv_options[:headers] ||= class_columns(@data)
end
assign_import_csv_options!() click to toggle source
# File lib/lite/report/record.rb, line 40
def assign_import_csv_options!
  @csv_options[:headers] ||= class_columns(klass)
end
created_at_timestamp?() click to toggle source
# File lib/lite/report/record.rb, line 71
def created_at_timestamp?
  return @created_at_timestamp if defined?(@created_at_timestamp)

  @created_at_timestamp = klass.new.respond_to?(:created_at)
end
generate_export!() click to toggle source
# File lib/lite/report/record.rb, line 57
def generate_export!
  assign_export_data!
  super
end
stream_export!() click to toggle source
# File lib/lite/report/record.rb, line 62
def stream_export!
  assign_export_data!
  super
end
timestamp() click to toggle source
# File lib/lite/report/record.rb, line 67
def timestamp
  @timestamp ||= Time.try(:current) || Time.now
end
updated_at_timestamp?() click to toggle source
# File lib/lite/report/record.rb, line 77
def updated_at_timestamp?
  return @updated_at_timestamp if defined?(@updated_at_timestamp)

  @updated_at_timestamp = klass.new.respond_to?(:updated_at)
end