class Blocktrain::Query
Public Class Methods
new(options = {})
click to toggle source
# File lib/blocktrain/query.rb, line 4 def initialize(options = {}) @memory_addresses = [options.fetch(:memory_addresses, nil)].flatten.compact @signals = [options[:signals]].flatten.compact @from = parse_datetime(options.fetch(:from, '2015-09-01T00:00:00')) @to = parse_datetime(options.fetch(:to, '2015-09-02T00:00:00')) @limit = options.fetch(:limit, 100) end
Public Instance Methods
address_query()
click to toggle source
# File lib/blocktrain/query.rb, line 27 def address_query # Look up memory addresses directly if specified unless @memory_addresses == [] build_query(@memory_addresses) else # No query if there isn't a signal specified return nil if @signals == [] lookups = Lookups.instance.lookups @signals = @signals.map { |s| lookups[s] } build_query(@signals) end end
body()
click to toggle source
# File lib/blocktrain/query.rb, line 81 def body { query: query, size: @limit } end
build_query(addresses)
click to toggle source
# File lib/blocktrain/query.rb, line 40 def build_query(addresses) addresses.map! { |a| "memoryAddress:#{a}" } addresses.join(" OR ") end
filtered_filter()
click to toggle source
# File lib/blocktrain/query.rb, line 64 def filtered_filter { bool: { must: [ { range: { timeStamp: { gte: @from, lte: @to } } } ] } } end
filtered_query()
click to toggle source
# File lib/blocktrain/query.rb, line 54 def filtered_query q = address_query return {} if q.nil? { query_string: { query: q } } end
hits()
click to toggle source
# File lib/blocktrain/query.rb, line 18 def hits result['hits']['total'] end
parse_datetime(datetime)
click to toggle source
# File lib/blocktrain/query.rb, line 22 def parse_datetime(datetime) utc = Time.parse(datetime).utc return utc.to_i * 1000 end
query()
click to toggle source
# File lib/blocktrain/query.rb, line 45 def query { filtered: { query: filtered_query, filter: filtered_filter } } end
results()
click to toggle source
# File lib/blocktrain/query.rb, line 14 def results result['hits']['hits'] end
Private Instance Methods
result()
click to toggle source
# File lib/blocktrain/query.rb, line 90 def result Client.results(body) end