Class: Ddr::Index::CSVQueryResult

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

Constant Summary collapse

MAX_ROWS =
10**8
MV_SEP =
";"

Instance Attribute Summary collapse

Attributes inherited from AbstractQueryResult

#conn, #query

Instance Method Summary collapse

Methods inherited from AbstractQueryResult

#count, #each

Constructor Details

#initialize(query, mv_sep: MV_SEP) ⇒ CSVQueryResult

Returns a new instance of CSVQueryResult.



13
14
15
16
# File 'lib/ddr/index/csv_query_result.rb', line 13

def initialize(query, mv_sep: MV_SEP)
  super(query)
  @mv_sep = mv_sep
end

Instance Attribute Details

#mv_sepObject (readonly)

Returns the value of attribute mv_sep.



9
10
11
# File 'lib/ddr/index/csv_query_result.rb', line 9

def mv_sep
  @mv_sep
end

Instance Method Details

#csvObject



18
19
20
# File 'lib/ddr/index/csv_query_result.rb', line 18

def csv
  CSV.new(data, csv_opts.to_h)
end

#csv_headersObject



46
47
48
49
50
51
52
# File 'lib/ddr/index/csv_query_result.rb', line 46

def csv_headers
  if headers.empty?
    :first_row
  else
    headers
  end
end

#csv_optsObject



30
31
32
# File 'lib/ddr/index/csv_query_result.rb', line 30

def csv_opts
  @csv_opts ||= CSVOptions.new(headers: csv_headers)
end

#dataObject



62
63
64
65
# File 'lib/ddr/index/csv_query_result.rb', line 62

def data
  raw = conn.get("select", params: solr_csv_params)
  raw.gsub(/\\#{mv_sep}/, mv_sep)
end

#headersObject



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

def headers
  @headers ||= query.fields.map(&:heading)
end

#rowsObject



26
27
28
# File 'lib/ddr/index/csv_query_result.rb', line 26

def rows
  query.rows || MAX_ROWS
end

#solr_csv_headerObject



54
55
56
# File 'lib/ddr/index/csv_query_result.rb', line 54

def solr_csv_header
  csv_headers == :first_row
end

#solr_csv_optsObject



34
35
36
37
38
39
40
# File 'lib/ddr/index/csv_query_result.rb', line 34

def solr_csv_opts
  @solr_csv_opts ||= SolrCSVOptions.new(col_sep: csv_opts.col_sep,
                                        quote_char: csv_opts.quote_char,
                                        header: solr_csv_header,
                                        mv_sep: mv_sep,
                                        rows: rows)
end

#solr_csv_paramsObject



58
59
60
# File 'lib/ddr/index/csv_query_result.rb', line 58

def solr_csv_params
  params.merge solr_csv_opts.params
end

#to_sObject



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

def to_s
  read.to_csv
end