Sha256: 4e6c21b53e2c584353c8a26dcc3f642ff1e1748b1f080ec9586a559070433021

Contents?: true

Size: 1.64 KB

Versions: 4

Compression:

Stored size: 1.64 KB

Contents

module ForestLiana
  class QueryStatGetter
    attr_accessor :record

    def initialize(params)
      @params = params
    end

    def perform
      if @params['record_id']
        @params['query'].gsub!('?', @params['record_id'].to_s)
      end

      result = ActiveRecord::Base.connection.execute(@params['query'])

      case @params['type']
      when 'Value'
        if result.count
          result_line = result.first
          if !result_line['value']
            raise error_message(result_line, "'value'")
          else
            @record = Model::Stat.new(value: {
              countCurrent: result_line['value'],
              countPrevious: result_line['previous']
            })
          end
        end
      when 'Pie'
        if result.count
          result.each do |result_line|
            if !result_line['value'] || !result_line['key']
              raise error_message(result_line, "'key', 'value'")
            end
          end

          @record = Model::Stat.new(value: result.to_a)
        end
      when 'Line'
        if result.count
          result.each do |result_line|
            if !result_line['value'] || !result_line['key']
              raise error_message(result_line, "'key', 'value'")
            end
          end

          result_formatted = result.map do |result_line|
            { label: result_line['key'], values: { value: result_line['value'] }}
          end

          @record = Model::Stat.new(value: result_formatted)
        end
      end
    end

    private

    def error_message(result, key_names)
      "The result columns must be named #{key_names} instead of '#{result.keys.join("', '")}'"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
forest_liana-2.3.0 app/services/forest_liana/query_stat_getter.rb
forest_liana-2.2.2 app/services/forest_liana/query_stat_getter.rb
forest_liana-2.2.1 app/services/forest_liana/query_stat_getter.rb
forest_liana-2.2.0 app/services/forest_liana/query_stat_getter.rb