Class: Upkeep::ActiveRecordQuery::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/upkeep/active_record_query.rb

Instance Method Summary collapse

Constructor Details

#initialize(relation, opaque_table_policy:) ⇒ Collector

Returns a new instance of Collector.



79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/upkeep/active_record_query.rb', line 79

def initialize(relation, opaque_table_policy:)
  @relation = relation
  @opaque_table_policy = opaque_table_policy
  @primary_table = relation.klass.table_name
  @primary_key = relation.klass.primary_key
  @table_columns = Hash.new { |hash, table| hash[table] = [] }
  @table_aliases = {}
  @opaque_columns = false
  @opaque_tables = false
  @opaque_table_reasons = []
  @opaque_column_reasons = []
  @predicates = []
end

Instance Method Details

#analyzeObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/upkeep/active_record_query.rb', line 93

def analyze
  table(@primary_table)
  collect_relation_shape
  raise_opaque_relation! if opaque_relation? && @opaque_table_policy == :raise

  Result.new(
    primary_table: @primary_table,
    table_columns: normalized_table_columns,
    coverage: coverage,
    sql: safe_sql,
    primary_key: @primary_key,
    appendable: appendable_relation?,
    limit_value: @relation.limit_value,
    predicates: normalized_predicates
  )
end