Class: Ddr::Index::CSVQueryResult

Inherits:
AbstractQueryResult show all
Defined in:
lib/ddr/index/csv_query_result.rb

Constant Summary collapse

MAX_ROWS =
10**8
COL_SEP =
CSV::DEFAULT_OPTIONS[:col_sep].freeze
QUOTE_CHAR =
CSV::DEFAULT_OPTIONS[:quote_char].freeze
SOLR_CSV_OPTS =
{
  "csv.header"       => "false",
  "csv.mv.separator" => "|",
  "wt"               => "csv",
}.freeze
CSV_OPTS =
{
  return_headers: true,
  write_headers:  true,
}.freeze

Instance Attribute Summary collapse

Attributes inherited from AbstractQueryResult

#conn, #query

Instance Method Summary collapse

Methods inherited from AbstractQueryResult

#count

Constructor Details

#initialize(query, **opts) ⇒ CSVQueryResult

Returns a new instance of CSVQueryResult.



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ddr/index/csv_query_result.rb', line 24

def initialize(query, **opts)
  super(query)

  @solr_csv_opts = SOLR_CSV_OPTS.dup
  @solr_csv_opts[:rows] ||= MAX_ROWS

  @csv_opts = CSV_OPTS.dup
  @csv_opts[:headers] = query.fields.map(&:label)

  # Set column separator and quote character consistently
  @csv_opts[:col_sep]    = @solr_csv_opts["csv.separator"]    = opts.fetch(:col_sep, COL_SEP)
  @csv_opts[:quote_char] = @solr_csv_opts["csv.encapsulator"] = opts.fetch(:quote_char, QUOTE_CHAR)
end

Instance Attribute Details

#csv_optsObject (readonly)

Returns the value of attribute csv_opts.



22
23
24
# File 'lib/ddr/index/csv_query_result.rb', line 22

def csv_opts
  @csv_opts
end

#solr_csv_optsObject (readonly)

Returns the value of attribute solr_csv_opts.



22
23
24
# File 'lib/ddr/index/csv_query_result.rb', line 22

def solr_csv_opts
  @solr_csv_opts
end

Instance Method Details

#csvObject



38
39
40
# File 'lib/ddr/index/csv_query_result.rb', line 38

def csv
  CSV.new(data, csv_opts)
end

#eachObject



42
43
44
# File 'lib/ddr/index/csv_query_result.rb', line 42

def each
  csv.each
end

#to_sObject



46
47
48
# File 'lib/ddr/index/csv_query_result.rb', line 46

def to_s
  csv.string
end