class Ddr::Index::CSVQueryResult

Constants

CSV_MV_SEPARATOR
DEFAULT_CSV_OPTIONS
MAX_ROWS

Attributes

csv_opts[R]

Public Class Methods

new(query, csv_opts: {}) click to toggle source

See Ruby docs on CSV::new for details on available keys and values for the optional `csv_options' Hash parameter.

N.B. If you want to add a converter and retain the default converters, append DEFAULT_CSV_OPTIONS to your Array of converters.

Calls superclass method Ddr::Index::AbstractQueryResult::new
# File lib/ddr/index/csv_query_result.rb, line 33
def initialize(query, csv_opts: {})
  super(query)
  @csv_opts = DEFAULT_CSV_OPTIONS.merge(csv_opts)
end

Public Instance Methods

[](index_or_header) click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 46
def [](index_or_header)
  table.by_col_or_row![index_or_header]
end
data() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 78
def data
  if solr_csv_header?
    solr_data
  else
    [ query_field_headings.join(","), solr_data ].join("\n")
  end
end
delete_empty_columns!() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 38
def delete_empty_columns!
  table.by_col!.delete_if { |c, vals| vals.all?(&:nil?) }
end
each(&block) click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 42
def each(&block)
  table.by_row!.each(&block)
end
query_field_headings() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 62
def query_field_headings
  query.fields.map { |f| f.respond_to?(:heading) ? f.heading : f.to_s }
end
solr_csv_header?() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 66
def solr_csv_header?
  query.fields.empty?
end
solr_csv_opts() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 54
def solr_csv_opts
  { "csv.mv.separator" => CSV_MV_SEPARATOR,
    "csv.header"       => solr_csv_header?,
    "rows"             => solr_csv_rows,
    "wt"               => "csv",
  }
end
solr_csv_params() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 74
def solr_csv_params
  params.merge(solr_csv_opts)
end
solr_csv_rows() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 70
def solr_csv_rows
  query.rows || MAX_ROWS
end
solr_data() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 86
def solr_data
  Connection.get("select", params: solr_csv_params)
end
table() click to toggle source
# File lib/ddr/index/csv_query_result.rb, line 50
def table
  @table ||= CSV.parse(data, csv_opts)
end