BathHacked/energy-sparks

View on GitHub
app/controllers/concerns/csv_downloader.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module CsvDownloader
  extend ActiveSupport::Concern

private

  def readings_to_csv(sql_query, csv_header)
    conn = ActiveRecord::Base.connection.raw_connection

    StringIO.open do |s|
      s.puts csv_header
      conn.copy_data "COPY (#{sql_query}) TO STDOUT WITH CSV;" do
        while (row = conn.get_copy_data)
          s.puts row.tr('"', '').tr('{', '').tr('}', '').chomp.to_s
        end
      end
      s.string
    end
  end
end