diff --git a/Gemfile b/Gemfile index 14bfccf9d3d121e4e27d3bce4b614fdd3f5b3f77..dea3f17625d03ab46365a3e2fc25aa683deca5fb 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ gemspec group :development do # gem 'sqlite3' - gem 'influxdb-client', '1.16.0.pre.2765' + gem 'influxdb-client', '1.16.0.pre.2890' end # To use a debugger diff --git a/Gemfile.lock b/Gemfile.lock index 0020e2605f4a3111006b4a28638aa78435ea5a33..c90f4e7be0b3215054022996f14821d929154838 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@ PATH remote: . specs: - latias-influxdb (1.0.1) - influxdb-client (~> 1.16.0.pre.2765) + latias-influxdb (1.1.1) + influxdb-client (~> 1.16.0.pre.2890) rails (~> 6.1.4) GEM @@ -75,7 +75,7 @@ GEM activesupport (>= 4.2.0) i18n (1.8.10) concurrent-ruby (~> 1.0) - influxdb-client (1.16.0.pre.2765) + influxdb-client (1.16.0.pre.2890) loofah (2.10.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) @@ -118,7 +118,7 @@ GEM method_source rake (>= 0.13) thor (~> 1.0) - rake (13.0.5) + rake (13.0.6) sprockets (4.0.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -138,7 +138,7 @@ PLATFORMS x86_64-darwin-19 DEPENDENCIES - influxdb-client (= 1.16.0.pre.2765) + influxdb-client (= 1.16.0.pre.2890) latias-influxdb! BUNDLED WITH diff --git a/README.md b/README.md index 30107e6855d59db06ea689fd0ae3f746ac2e0030..6532f05be878b4557600b187877ff81c649e6fed 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,50 @@ mdb_energy_bucket.one_minute_before.find_cpu.call mdb_energy_bucket.my_cpu_value ``` +## Method + +```ruby +def yield(query) + merge_query('yield', query) +end + +def range(query) + merge_query('range', query) +end + +def filter(query) + merge_query('filter', query) +end + +def duplicate(query) + merge_query('duplicate', query) +end + +def merge_query(key, query) + raw_function "#{key}(#{query})" +end + +def raw_function(function) + raw_query "#{new_command} #{function}" +end + +def raw_query(query) + @query += query + self +end + +def client_reconnection + client_connection +end + +# And + +def execute(query) + @query = query +end + +``` + ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). diff --git a/gemfiles/latias-influxdb-1.1.1.gem b/gemfiles/latias-influxdb-1.1.1.gem new file mode 100644 index 0000000000000000000000000000000000000000..320dbbde1a7fd50b4e09168fff848dadacf6125a Binary files /dev/null and b/gemfiles/latias-influxdb-1.1.1.gem differ diff --git a/latias-influxdb.gemspec b/latias-influxdb.gemspec index 8a2328bfaa3caf418c6f036630895e67cd65d946..e8306d3a90e8d8cfb41ffa63bfe6b85bb98fca81 100644 --- a/latias-influxdb.gemspec +++ b/latias-influxdb.gemspec @@ -15,8 +15,8 @@ Gem::Specification.new do |spec| spec.metadata['source_code_uri'] = spec.homepage # spec.metadata['changelog_uri'] = spec.homepage - spec.files = Dir['{app,config,db,lib}/**/*', 'MIT-LICENSE', 'Rakefile', 'README.md'] + spec.files = Dir['{config,lib}/**/**/*', 'MIT-LICENSE', 'Rakefile', 'README.md'] - spec.add_dependency 'influxdb-client', '~> 1.16.0.pre.2765' + spec.add_dependency 'influxdb-client', '~> 1.16.0.pre.2890' spec.add_dependency 'rails', '~> 6.1.4' end diff --git a/lib/latias/influxdb.rb b/lib/latias/influxdb.rb index 430427e2b23b5ee48b2e979893088f207297c59e..112a3bf81cab9b5421acfb9f4b82fe258939b8e5 100644 --- a/lib/latias/influxdb.rb +++ b/lib/latias/influxdb.rb @@ -4,6 +4,7 @@ require 'latias/influxdb/bucket' require 'latias/influxdb/version' require 'latias/influxdb/engine' require "latias/influxdb/configuration" +require "latias/influxdb/action_bucket/base" module Latias # Influxdb diff --git a/lib/latias/influxdb/action_bucket/base.rb b/lib/latias/influxdb/action_bucket/base.rb new file mode 100644 index 0000000000000000000000000000000000000000..a930b2e51f44e0568028fdd34bb3185ec42875a3 --- /dev/null +++ b/lib/latias/influxdb/action_bucket/base.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'influxdb-client' + +module Latias + # Influxdb + module Influxdb + # Bucket + module ActionBucket + # base + class Base + attr_reader :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision, :query, :client + + def execute(query) + @query = query + end + + def call + all_query = "from(bucket: \"#{use_value('bucket')}\") #{@query}" + @query = '' + @client.create_query_api.query(query: all_query, org: use_value('org')) + end + + def client_connection + @query = '' + @client = InfluxDB2::Client.new(use_value('url'), use_value('token'), + use_ssl: use_value('use_ssl'), + verify_mode: use_value('verify_mode'), + precision: InfluxDB2::WritePrecision::NANOSECOND) + self + end + + private + + def use_value(key) + b = get_binding("self") + b.eval("@#{key}") || Latias::Influxdb.configuration.send(key) + end + + def new_command + '|> ' + end + + def get_binding(param) + binding + end + end + end + end +end diff --git a/lib/latias/influxdb/bucket.rb b/lib/latias/influxdb/bucket.rb index 97679a0331eac4b96824bce9faef9a3c4812e8f2..a1f7cadf87e7baa7677249a0c6dd4de13d0f8ad0 100644 --- a/lib/latias/influxdb/bucket.rb +++ b/lib/latias/influxdb/bucket.rb @@ -1,65 +1,43 @@ # frozen_string_literal: true -require 'influxdb-client' +require "latias/influxdb/action_bucket/base" module Latias # Influxdb module Influxdb # Bucket - class Bucket - attr_reader :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision - - def call - all_query = "from(bucket: \"#{use_value('bucket')}\") #{@query}" - @query = '' - @client.create_query_api.query(query: all_query, org: use_value('org')) - end - + class Bucket < Latias::Influxdb::ActionBucket::Base def yield(query) - @query += "#{new_command} yield(#{query})" - self + merge_query('yield', query) end def range(query) - @query += "#{new_command} range(#{query})" - self + merge_query('range', query) end def filter(query) - @query += "#{new_command} filter(#{query})" - self + merge_query('filter', query) end - def real_query(query) - @query += query + def duplicate(query) + merge_query('duplicate', query) end - def client_connection - @query = '' - @client = InfluxDB2::Client.new(use_value('url'), use_value('token'), - use_ssl: use_value('use_ssl'), - verify_mode: use_value('verify_mode'), - precision: InfluxDB2::WritePrecision::NANOSECOND) - self + def merge_query(key, query) + raw_function "#{key}(#{query})" end - def client_reconnection - client_connection - end - - private - - def use_value(key) - b = get_binding("self") - b.eval("@#{key}") || Latias::Influxdb.configuration.send(key) + def raw_function(function) + raw_query "#{new_command} #{function}" end - def new_command - '|> ' + def raw_query(query) + @query += query + self end - def get_binding(param) - binding + def client_reconnection + client_connection end end end diff --git a/lib/latias/influxdb/version.rb b/lib/latias/influxdb/version.rb index 9257f5a36ae3190a0881b66f246b2264c02faf9d..53684b35cb2cee1149fa1ae57b99b890cde406d0 100644 --- a/lib/latias/influxdb/version.rb +++ b/lib/latias/influxdb/version.rb @@ -2,6 +2,6 @@ module Latias module Influxdb - VERSION = '1.0.1' + VERSION = '1.1.1' end end