Module: BlindIndex::Extensions::TableMetadata

Defined in:
lib/blind_index/extensions.rb

Instance Method Summary collapse

Instance Method Details

#has_blind_indexes?Boolean

memoize for performance

Returns:

  • (Boolean)


23
24
25
26
27
28
# File 'lib/blind_index/extensions.rb', line 23

def has_blind_indexes?
  unless defined?(@has_blind_indexes)
    @has_blind_indexes = klass.respond_to?(:blind_indexes)
  end
  @has_blind_indexes
end

#resolve_column_aliases(hash) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/blind_index/extensions.rb', line 4

def resolve_column_aliases(hash)
  new_hash = super
  if has_blind_indexes?
    hash.each do |key, _|
      if key.respond_to?(:to_sym) && (bi = klass.blind_indexes[key.to_sym]) && !new_hash[key].is_a?(ActiveRecord::StatementCache::Substitute)
        value = new_hash.delete(key)
        new_hash[bi[:bidx_attribute]] =
          if value.is_a?(Array)
            value.map { |v| BlindIndex.generate_bidx(v, **bi) }
          else
            BlindIndex.generate_bidx(value, **bi)
          end
      end
    end
  end
  new_hash
end