class Elastic::Core::Definition
Attributes
middleware_options[R]
Public Class Methods
new()
click to toggle source
# File lib/elastic/core/definition.rb, line 19 def initialize @target = nil @field_map = {} @field_cache = {} @middleware_options = HashWithIndifferentAccess.new end
Public Instance Methods
as_es_mapping()
click to toggle source
# File lib/elastic/core/definition.rb, line 58 def as_es_mapping ensure_frozen! properties = {} @field_map.each_value do |field| properties[field.name] = field.mapping_options end { 'properties' => properties.as_json } end
fields()
click to toggle source
# File lib/elastic/core/definition.rb, line 30 def fields @field_map.each_value end
freeze()
click to toggle source
Calls superclass method
# File lib/elastic/core/definition.rb, line 34 def freeze return if frozen? cache_target complete_and_validate_fields freeze_fields @middleware_options.freeze super end
get_field(_name)
click to toggle source
# File lib/elastic/core/definition.rb, line 44 def get_field(_name) ensure_frozen! _name = _name.to_s @field_cache[_name] = resolve_field(_name) unless @field_cache.key? _name @field_cache[_name] end
has_field?(_name)
click to toggle source
# File lib/elastic/core/definition.rb, line 52 def has_field?(_name) ensure_frozen! !get_field(_name).nil? end
mode()
click to toggle source
# File lib/elastic/core/definition.rb, line 15 def mode target.mode end
register_field(_field)
click to toggle source
# File lib/elastic/core/definition.rb, line 26 def register_field(_field) @field_map[_field.name] = _field end
target()
click to toggle source
# File lib/elastic/core/definition.rb, line 5 def target raise 'attempting to access target before definition has been frozen' if @target_cache.nil? @target_cache end
target=(_value)
click to toggle source
# File lib/elastic/core/definition.rb, line 11 def target=(_value) @target = _value end
Private Instance Methods
cache_target()
click to toggle source
# File lib/elastic/core/definition.rb, line 83 def cache_target target = @target target = target.to_s.camelize.constantize if @target.is_a?(Symbol) || @target.is_a?(String) target = load_target_middleware(target) unless target.class < BaseMiddleware raise 'index target is not indexable' if target.nil? @target_cache = target end
complete_and_validate_fields()
click to toggle source
# File lib/elastic/core/definition.rb, line 93 def complete_and_validate_fields @field_map.each_value do |field| field.merge! infer_mapping_options(field.name) if field.needs_inference? error = field.validate raise error unless error.nil? end @field_map.freeze end
ensure_frozen!()
click to toggle source
# File lib/elastic/core/definition.rb, line 104 def ensure_frozen! raise 'definition needs to be frozen' unless frozen? end
freeze_fields()
click to toggle source
# File lib/elastic/core/definition.rb, line 108 def freeze_fields @field_map.each_value(&:freeze) end
infer_mapping_options(_name)
click to toggle source
# File lib/elastic/core/definition.rb, line 116 def infer_mapping_options(_name) target.field_options_for(_name, middleware_options) end
load_target_middleware(_target)
click to toggle source
# File lib/elastic/core/definition.rb, line 112 def load_target_middleware(_target) Middleware.wrap(_target) end
resolve_field(_name)
click to toggle source
# File lib/elastic/core/definition.rb, line 71 def resolve_field(_name) separator = _name.index '.' if separator.nil? @field_map[_name] else parent = @field_map[_name[0...separator]] return nil if parent.nil? parent.get_field(_name[separator + 1..-1]) end end