module Ej
  class Values
    attr_reader :client
    attr_reader :index
    attr_reader :logger

    def initialize(global_options)
      @logger =  Logger.new($stderr)
      @logger.level = global_options[:debug] ? Logger::DEBUG : Logger::INFO
      @client = get_client(global_options[:host], global_options[:index])
      @index = global_options[:index]
    end

    def get_client(host, index)
      host, port = host.split(':')
      transport = ::Elasticsearch::Transport::Transport::HTTP::Faraday.new(
        {
          hosts: [{ host: host, port: port }],
          options: {
            reload_connections: true,
            reload_on_failure: false,
            retry_on_failure: 5,
            transport_options: {
              request: { timeout: 300 }
            }
          }
        }
      )
      ::Elasticsearch::Client.new transport: transport, index: index, logger: @logger
    end
  end
end