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