mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 05:26:17 +02:00
29 lines
774 B
Ruby
29 lines
774 B
Ruby
class CsvGenerator
|
|
class << self
|
|
def generate_csv(objects)
|
|
class_name = objects.first.class
|
|
return default_generation(objects) unless custom_csv?(class_name)
|
|
|
|
CSV.generate do |csv|
|
|
csv << class_name.csv_header
|
|
objects.each { |object| csv << object.as_csv_row }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def default_generation(objects)
|
|
CSV.generate do |csv|
|
|
csv << objects.column_names
|
|
objects.all.find_each { |object| csv << object.attributes.values_at(*objects.column_names) }
|
|
end
|
|
end
|
|
|
|
def custom_csv?(class_name)
|
|
[
|
|
Version::DomainVersion, Version::ContactVersion, Domain,
|
|
Contact, Invoice, Account, AccountActivity, ApiUser, WhiteIp
|
|
].include?(class_name)
|
|
end
|
|
end
|
|
end
|