Sha256: 340e3df4d02dad7396d11e2a056f1efb96ccae2d21fd9bdd1ebd1b5e47b12d9f

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module DbMod
  module Statements
    module Configuration
      module As
        # Coercer which converts an SQL result set
        # into a string formatted as a CSV document.
        # May be enabled for a prepared method or
        # statement method using +.as(:csv)+:
        #
        #  def_statement(:a, 'SELECT a, b FROM foo').as(:csv)
        #  def_prepared(:b, 'SELECT b, c FROM bar').as(:csv)
        #
        #  def do_stuff
        #    a # => "a,b\r\n1,2\r\n3,4\r\n..."
        #  end
        module Csv
          # Enables this module to be passed to
          # {DbMod::Statements::Configuration.process_method_results} as the
          # +wrapper+ function, in which case it will retrieve the results
          # and format them as a CSV document using the column names
          # from the result set.
          #
          # @param results [Object] SQL result set
          # @return [String] a CSV formatted document
          def self.call(results)
            headers = nil
            CSV.generate do |csv|
              results.each do |row|
                csv << (headers = row.keys) unless headers

                csv << headers.map { |col| row[col] }
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
db_mod-0.0.4 lib/db_mod/statements/configuration/as/csv.rb