class Deviant::Client

Public Class Methods

new(options) click to toggle source
# File lib/deviant/client.rb, line 3
def initialize(options)
  @options = options
end

Public Instance Methods

fetch(query, tags = []) click to toggle source
# File lib/deviant/client.rb, line 14
def fetch(query, tags = [])
  query = build_query(query)
  search do
    query { string query }
    filter :terms, tags: tags if tags.size > 0
    sort { by :date, 'desc' }
  end
end
index(&block) click to toggle source
# File lib/deviant/client.rb, line 23
def index(&block)
  Tire.index @options[:name], &block
end
store(name, message, data = {}) click to toggle source
# File lib/deviant/client.rb, line 7
def store(name, message, data = {})
  entry = {name: name, message: message, date: Time.now}.merge(data)
  return store_async(entry) if @options[:sidekiq][:enabled]

  index { store(entry) }
end

Private Instance Methods

build_query(query) click to toggle source
# File lib/deviant/client.rb, line 37
def build_query(query)
  if query.is_a?(Hash)
    return query.to_a.map { |item|
      "#{item[0]}:#{item[1]}"
    }.join(' AND ')
  elsif query.is_a?(Array)
    query.join(' AND ')
  else
    query
  end
end
store_async(entry) click to toggle source
# File lib/deviant/client.rb, line 33
def store_async(entry)
  DeviantWorker.perform_async(entry)
end