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
search(&block)
click to toggle source
# File lib/deviant/client.rb, line 27 def search(&block) Tire.search @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