Module: DbMod::As::Csv
- Defined in:
- lib/db_mod/as/csv.rb
Overview
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
Class Method Summary collapse
-
.call(wrapped_method, *args) ⇒ String
Enables this module to be passed to Statements.extend_method 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.
Class Method Details
.call(wrapped_method, *args) ⇒ String
Enables this module to be passed to Statements.extend_method 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.
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/db_mod/as/csv.rb', line 23 def self.call(wrapped_method, *args) results = wrapped_method.call(*args) 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 |