Sha256: 6c7ecba731fa8da574b2afca3190f797a9f5368ca1d77ad7b44f89bcdaa4458a
Contents?: true
Size: 1.23 KB
Versions: 3
Compression:
Stored size: 1.23 KB
Contents
require "csv" module Ddr::Index class CSVQueryResult < AbstractQueryResult 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 attr_reader :csv_opts, :solr_csv_opts 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 def csv CSV.new(data, csv_opts) end def each csv.each end def to_s csv.string end private def csv_params params.merge(solr_csv_opts) end def data conn.get "select", params: csv_params end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ddr-models-2.4.0.rc5 | lib/ddr/index/csv_query_result.rb |
ddr-models-2.4.0.rc4 | lib/ddr/index/csv_query_result.rb |
ddr-models-2.4.0.rc3 | lib/ddr/index/csv_query_result.rb |