class Scalastic::Config

Attributes

partition_prefix[R]
partition_selector[R]
partition_selector_type[R]

Public Class Methods

default() click to toggle source
# File lib/scalastic/config.rb, line 7
def self.default
  @default ||= new
end
new() click to toggle source
# File lib/scalastic/config.rb, line 11
def initialize
  @partition_prefix = 'scalastic'
  @partition_selector = 'scalastic_partition_id'
  @partition_selector_type = 'long'
end

Public Instance Methods

get_partition_id(alias_name) click to toggle source
# File lib/scalastic/config.rb, line 25
def get_partition_id(alias_name)
  m = partition_regex.match(alias_name)
  m && m[1]
end
index_endpoint(partition_id) click to toggle source
# File lib/scalastic/config.rb, line 17
def index_endpoint(partition_id)
  "#{partition_prefix}_#{partition_id}_index"
end
partition_prefix=(value) click to toggle source
# File lib/scalastic/config.rb, line 30
def partition_prefix=(value)
  raise(ArgumentError, 'Empty partition prefix') if value.nil? || value.empty?
  @partition_prefix = value
end
partition_selector=(value) click to toggle source
# File lib/scalastic/config.rb, line 35
def partition_selector=(value)
  raise(ArgumentError, 'Empty partition selector') if value.nil? || value.empty?
  @partition_selector = value
end
partition_selector_mapping() click to toggle source
# File lib/scalastic/config.rb, line 46
def partition_selector_mapping
  parts = partition_selector.to_s.split('.').reverse
  field = parts.shift
  parts.reduce(field => {type: partition_selector_type}){|acc, p| {p => {type: 'object', properties: acc}}}
end
partition_selector_type=(value) click to toggle source
# File lib/scalastic/config.rb, line 40
def partition_selector_type=(value)
  value = value.to_s
  raise(ArgumentError, "Unsupported selector type: #{value}. Supported types are: (string, long)") unless %w(string long integer).include?(value)
  @partition_selector_type = value
end
search_endpoint(partition_id) click to toggle source
# File lib/scalastic/config.rb, line 21
def search_endpoint(partition_id)
  "#{partition_prefix}_#{partition_id}_search"
end

Private Instance Methods

partition_regex() click to toggle source
# File lib/scalastic/config.rb, line 54
def partition_regex
  @partition_regex ||= begin
    escaped_prefix = Regexp.escape(partition_prefix)
    Regexp.new("^#{escaped_prefix}_(\\w+)_(index|search)$")
  end
end