From 8910c37ab2a5efdfcec08fc9d0233754f961da73 Mon Sep 17 00:00:00 2001 From: nattanon <nattanon@hospital-os.com> Date: Fri, 9 Jul 2021 16:04:39 +0700 Subject: [PATCH] Version 1.1.0 --- Gemfile | 2 +- Gemfile.lock | 10 ++-- README.md | 44 ++++++++++++++++++ gemfiles/latias-influxdb-1.1.1.gem | Bin 0 -> 7680 bytes latias-influxdb.gemspec | 4 +- lib/latias/influxdb.rb | 1 + lib/latias/influxdb/action_bucket/base.rb | 50 ++++++++++++++++++++ lib/latias/influxdb/bucket.rb | 54 +++++++--------------- lib/latias/influxdb/version.rb | 2 +- 9 files changed, 120 insertions(+), 47 deletions(-) create mode 100644 gemfiles/latias-influxdb-1.1.1.gem create mode 100644 lib/latias/influxdb/action_bucket/base.rb diff --git a/Gemfile b/Gemfile index 14bfccf..dea3f17 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 0020e26..c90f4e7 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 30107e6..6532f05 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 GIT binary patch literal 7680 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 A5C8xG literal 0 HcmV?d00001 diff --git a/latias-influxdb.gemspec b/latias-influxdb.gemspec index 8a2328b..e8306d3 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 430427e..112a3bf 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 0000000..a930b2e --- /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 97679a0..a1f7cad 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 9257f5a..53684b3 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 -- GitLab