lib/influxer/metrics/relation.rb in influxer-1.1.6 vs lib/influxer/metrics/relation.rb in influxer-1.2.0
- old
+ new
@@ -1,16 +1,15 @@
# frozen_string_literal: true
-require 'active_support/core_ext/module/delegation'
-require 'influxer/metrics/relation/time_query'
-require 'influxer/metrics/relation/calculations'
-require 'influxer/metrics/relation/where_clause'
-require 'influxer/metrics/quoting/timestamp'
+require "active_support/core_ext/module/delegation"
+require "influxer/metrics/relation/time_query"
+require "influxer/metrics/relation/calculations"
+require "influxer/metrics/relation/where_clause"
+require "influxer/metrics/quoting/timestamp"
module Influxer
# Relation is used to build queries
- # rubocop:disable Metrics/ClassLength
class Relation
include Influxer::TimeQuery
include Influxer::Calculations
include Influxer::TimestampQuoting
prepend Influxer::WhereClause
@@ -142,21 +141,21 @@
sql << select_values.uniq.join(", ")
sql << "from #{build_series_name}"
- sql << "where #{where_values.join(' and ')}" unless where_values.empty?
+ sql << "where #{where_values.join(" and ")}" unless where_values.empty?
unless group_values.empty? && time_value.nil?
- group_fields = (time_value.nil? ? [] : ['time(' + @values[:time] + ')']) + group_values
+ group_fields = (time_value.nil? ? [] : ["time(" + @values[:time] + ")"]) + group_values
group_fields.uniq!
- sql << "group by #{group_fields.join(', ')}"
+ sql << "group by #{group_fields.join(", ")}"
end
sql << "fill(#{fill_value})" unless fill_value.nil?
- sql << "order by #{order_values.uniq.join(',')}" unless order_values.empty?
+ sql << "order by #{order_values.uniq.join(",")}" unless order_values.empty?
sql << "limit #{limit_value}" unless limit_value.nil?
sql << "offset #{offset_value}" unless offset_value.nil?
sql << "slimit #{slimit_value}" unless slimit_value.nil?
sql << "soffset #{soffset_value}" unless soffset_value.nil?
@@ -167,18 +166,19 @@
# rubocop:enable Metrics/MethodLength
# rubocop:enable Metrics/PerceivedComplexity
def to_a
return @records if loaded?
+
load
end
def inspect
entries = to_a.take(11).map!(&:inspect)
- entries[10] = '...' if entries.size == 11
+ entries[10] = "..." if entries.size == 11
- "#<#{self.class.name} [#{entries.join(', ')}]>"
+ "#<#{self.class.name} [#{entries.join(", ")}]>"
end
def empty?
unless loaded?
# we don't need selects here
@@ -207,11 +207,11 @@
def delete_all
sql = ["drop series"]
sql << "from #{@instance.series}"
- sql << "where #{where_values.join(' and ')}" unless where_values.empty?
+ sql << "where #{where_values.join(" and ")}" unless where_values.empty?
sql = sql.join " "
@instance.client.query sql
end
@@ -226,10 +226,11 @@
# rubocop:disable Metrics/AbcSize
# rubocop:disable Metrics/MethodLength
def merge!(rel)
return self if rel.nil?
+
MULTI_VALUE_METHODS.each do |method|
(@values[method] ||= []).concat(rel.values[method]).uniq! unless rel.values[method].nil?
end
MULTI_KEY_METHODS.each do |method|
@@ -278,10 +279,11 @@
end
end
def get_points(list)
return list if normalized?
+
list.reduce([]) do |a, e|
a + e.fetch("values", []).map { |v| inject_tags(v, e["tags"] || {}) }
end
end
@@ -289,14 +291,16 @@
val.merge(tags)
end
def method_missing(method, *args, &block)
return super unless @klass.respond_to?(method)
+
merge!(scoping { @klass.public_send(method, *args, &block) })
end
def respond_to_missing?(method, *args)
return true if @klass.respond_to?(method)
+
super
end
end
end