Sha256: 49eb2d6d5589d9f34e10719fe411111289a7037f0012f155d39fb0d5cc8a98a2
Contents?: true
Size: 1.4 KB
Versions: 3
Compression:
Stored size: 1.4 KB
Contents
module Influxer module WhereClause #:nodoc: # accepts hash or strings conditions def where(*args, **hargs) build_where(args, hargs, false) self end def not(*args, **hargs) build_where(args, hargs, true) self end protected def build_where(args, hargs, negate) case when (args.present? && args[0].is_a?(String)) where_values.concat args.map { |str| "(#{str})" } when hargs.present? build_hash_where(hargs, negate) else false end end def build_hash_where(hargs, negate = false) hargs.each do |key, val| where_values << "(#{build_eql(key, val, negate)})" end end def build_eql(key, val, negate) case val when Regexp "#{key}#{negate ? '!~' : '=~'}#{val.inspect}" when Array build_in(key, val, negate) when Range build_range(key, val, negate) else "#{key}#{negate ? '<>' : '='}#{quoted(val, key)}" end end def build_in(key, arr, negate) buf = [] arr.each do |val| buf << build_eql(key, val, negate) end "#{buf.join(negate ? ' and ' : ' or ')}" end def build_range(key, val, negate) if negate "#{key}<#{quoted(val.begin)} and #{key}>#{quoted(val.end)}" else "#{key}>#{quoted(val.begin)} and #{key}<#{quoted(val.end)}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
influxer-0.5.0 | lib/influxer/metrics/relation/where_clause.rb |
influxer-0.4.0 | lib/influxer/metrics/relation/where_clause.rb |
influxer-0.3.1 | lib/influxer/metrics/relation/where_clause.rb |