Sha256: 16e13a0cf88f9fc4ee005720f5ce7a3bb2d20335be44b6dc8b588685e27e2b8e

Contents?: true

Size: 1.09 KB

Versions: 10

Compression:

Stored size: 1.09 KB

Contents

module Elasticity
  class IndexConfig
    ATTRS = [:index_base_name, :document_type, :mapping, :strategy].freeze
    attr_accessor *ATTRS

    def initialize(elasticity_config)
      @elasticity_config = elasticity_config
      yield(self)
      validate!
    end

    def segment(name)
      new_config = self.dup
      new_config.index_base_name = "#{index_base_name}_#{name.underscore}"
      new_config
    end

    def client
      @elasticity_config.client
    end

    def definition
      { settings: @elasticity_config.settings, mappings: { @document_type => @mapping } }
    end

    def fq_index_base_name
      return @fq_index_base_name if defined?(@fq_index_base_name)

      if namespace = @elasticity_config.namespace
        @fq_index_base_name = "#{namespace}_#{@index_base_name}"
      else
        @fq_index_base_name = @index_base_name
      end

      @fq_index_base_name
    end

    def strategy
      @strategy ||= Strategies::SingleIndex
    end

    private

    def validate!
      ATTRS.each do |attr|
        raise "#{attr} is not set" if public_send(attr).nil?
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
es-elasticity-0.5.2 lib/elasticity/index_config.rb
es-elasticity-0.5.1 lib/elasticity/index_config.rb
es-elasticity-0.5.0 lib/elasticity/index_config.rb
es-elasticity-0.4.5 lib/elasticity/index_config.rb
es-elasticity-0.4.4 lib/elasticity/index_config.rb
es-elasticity-0.4.3 lib/elasticity/index_config.rb
es-elasticity-0.4.2 lib/elasticity/index_config.rb
es-elasticity-0.3.10 lib/elasticity/index_config.rb
es-elasticity-0.4.1 lib/elasticity/index_config.rb
es-elasticity-0.4.0 lib/elasticity/index_config.rb