Class: ArQueryMatchers::Queries::QueryCounter::QueryStats

Inherits:
Object
  • Object
show all
Defined in:
lib/ar_query_matchers/queries/query_counter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queries) ⇒ QueryStats

Returns a new instance of QueryStats.



36
37
38
# File 'lib/ar_query_matchers/queries/query_counter.rb', line 36

def initialize(queries)
  @queries = queries
end

Instance Attribute Details

#queriesObject (readonly)

Returns the value of attribute queries.



40
41
42
# File 'lib/ar_query_matchers/queries/query_counter.rb', line 40

def queries
  @queries
end

Instance Method Details

#query_countsHash

Returns of model name to query count, for example: { ‘Company’ => 5}.

Returns:

  • (Hash)

    of model name to query count, for example: { ‘Company’ => 5}



43
44
45
# File 'lib/ar_query_matchers/queries/query_counter.rb', line 43

def query_counts
  Hash[*queries.reduce({}) { |acc, (model_name, data)| acc.update model_name => data[:count] }.sort_by(&:first).flatten]
end

#query_lines_by_frequencyHash

Returns of line in the source code to its frequency.

Returns:

  • (Hash)

    of line in the source code to its frequency



48
49
50
51
52
53
54
55
# File 'lib/ar_query_matchers/queries/query_counter.rb', line 48

def query_lines_by_frequency
  queries.reduce({}) do |lines, (model_name, data)|
    frequencies = data[:lines].reduce(Hash.new { |h, k| h[k] = 0 }) do |freq, line|
      freq.update line => freq[line] + 1
    end
    lines.update model_name => frequencies
  end
end