Sha256: 3f5aea2ff5c217bf770234782817fe8cb4ded6e37470d8155d3a9fe0761323d2

Contents?: true

Size: 1.28 KB

Versions: 35

Compression:

Stored size: 1.28 KB

Contents

require "csv"

module Ddr::Index
  class CSVQueryResult < AbstractQueryResult

    MAX_ROWS = 10**8
    MV_SEP   = ";"

    attr_reader :mv_sep

    delegate :read, :each, to: :csv

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

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

    def to_s
      read.to_csv
    end

    def rows
      query.rows || MAX_ROWS
    end

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

    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

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

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

    def solr_csv_header
      csv_headers == :first_row
    end

    def solr_csv_params
      params.merge solr_csv_opts.params
    end

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

  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
ddr-models-2.4.12 lib/ddr/index/csv_query_result.rb
ddr-models-2.4.11 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.rc4 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.rc3 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.rc2 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.rc1 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.22 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.21 lib/ddr/index/csv_query_result.rb
ddr-models-2.4.10 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.20 lib/ddr/index/csv_query_result.rb
ddr-models-2.4.9 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.18 lib/ddr/index/csv_query_result.rb
ddr-models-2.4.8 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.17 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.16 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.15 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.14 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.13 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.12 lib/ddr/index/csv_query_result.rb
ddr-models-3.0.0.beta.11 lib/ddr/index/csv_query_result.rb