Class: N1Finder::N1Query

Inherits:
Object
  • Object
show all
Defined in:
lib/n_1_finder/n_1_query.rb

Overview

N+1 queries representation

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queries) ⇒ N1Query

A new instance of N1Finder::N1Query query initialized by similar queries

Parameters:



16
17
18
19
20
# File 'lib/n_1_finder/n_1_query.rb', line 16

def initialize(queries)
  @query = queries.first.footprint[:query]
  @line = queries.first.footprint[:line]
  @original_queries = queries.map(&:query)
end

Instance Attribute Details

#lineObject (readonly)

Line where queries were executed in application



11
# File 'lib/n_1_finder/n_1_query.rb', line 11

attr_reader :query, :line, :original_queries

#original_queriesObject (readonly)

Returns the value of attribute original_queries.



11
# File 'lib/n_1_finder/n_1_query.rb', line 11

attr_reader :query, :line, :original_queries

#queryObject (readonly)

Query with masked ids



11
12
13
# File 'lib/n_1_finder/n_1_query.rb', line 11

def query
  @query
end

Class Method Details

.generate_by(queries) ⇒ Array<N1Finder::N1Query>

Generates N1Finder::N1Query from array of N1Finder::Query

Parameters:

Returns:



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/n_1_finder/n_1_query.rb', line 27

def self.generate_by(queries)
  grouped_queries = queries.group_by(&:footprint)

  n1_grouped_queries = grouped_queries.select do |_, similar_queries|
    similar_queries.count > 1
  end

  n1_grouped_queries.map do |_, similar_queries|
    new(similar_queries)
  end
end