From 6b819c37310b6fd165cf6d7e883dc9353715e972 Mon Sep 17 00:00:00 2001 From: nattanon <nattanon@hospital-os.com> Date: Thu, 8 Jul 2021 15:02:11 +0700 Subject: [PATCH] Use config file and update version to 1.0.0-beta --- Gemfile.lock | 2 +- README.md | 104 ++++++++++++------ lib/latias/influxdb.rb | 1 + lib/latias/influxdb/bucket.rb | 36 +++--- lib/latias/influxdb/configuration.rb | 11 +- lib/latias/influxdb/version.rb | 2 +- .../latias/influxdb/templates/initializer.rb | 8 +- 7 files changed, 109 insertions(+), 55 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ff8e270..9232ca2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - latias-influxdb (0.3.0) + latias-influxdb (1.0.0.pre.bata) influxdb-client (~> 1.16.0.pre.2765) rails (~> 6.1.4) diff --git a/README.md b/README.md index 48c79c4..78155da 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,77 @@ Ruby lib for use influxdb version 2 on Ruby language -## Usage +## Installation + +Add this line to your application's Gemfile: + +```ruby +gem 'latias-influxdb' +``` + +And then execute: + +```bash +$ bundle +``` + +Or install it yourself as: + +```bash +$ gem install latias-influxdb +``` + +Check version + +```bash + rails latias:influxdb:verion +``` + +## Configuration & Usage + +### Configuration + +First generating config file + +```bash + rails g latias:influxdb:install +``` + +```ruby +# config/initializers/latias_influxdb +Latias::Influxdb.configure do |config| + # default + # config.url = 'http://localhost:8086' + # config.token = 'token' + # config.bucket = 'bucket' + # config.org = 'org' + # config.use_ssl = false + # config.verify_mode = OpenSSL::SSL::VERIFY_NONE +end +``` + +### Usage + +You can use + +<!-- + + # config.url = 'http://188.166.252.165:8086' + # config.token = 'YyD4UGu4_Xn0CIVsycFdjaQVd7m1g5wRp0z2BCfBSyNL6-GHqqyZRePGy46B2m8Zg6jgqHAN_J6jyhCmvGeQRA==' + # config.bucket = 'MDBEnergy' + # config.org = 'MDBEnergy' + +--> + +```ruby + bucket = Latias::Influxdb::Bucket.new + bucket.client_connection + # or bucket = Latias::Influxdb::Bucket.new.client_connection + bucket.range('start: -1m').filter('fn: (r) => r["_measurement"] == "cpu"') + bucket.call +``` + +Or use with model <!-- ```ruby class MdbEnergyBucket < Latias::Influxdb::Bucket @@ -40,38 +110,6 @@ mdb_energy_bucket.range('start: -1m').filter('fn: (r) => r["_measurement"] == "c mdb_energy_bucket.call ``` -## Installation - -Add this line to your application's Gemfile: - -```ruby -gem 'latias-influxdb' -``` - -And then execute: - -```bash -$ bundle -``` - -Or install it yourself as: - -```bash -$ gem install latias-influxdb -``` - -Check version - -```bash - rails latias:influxdb:verion -``` - -## Contributing - -```bash - rails g latias:influxdb:install -``` - ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). diff --git a/lib/latias/influxdb.rb b/lib/latias/influxdb.rb index ac94642..430427e 100644 --- a/lib/latias/influxdb.rb +++ b/lib/latias/influxdb.rb @@ -3,6 +3,7 @@ require 'latias/influxdb/bucket' require 'latias/influxdb/version' require 'latias/influxdb/engine' +require "latias/influxdb/configuration" module Latias # Influxdb diff --git a/lib/latias/influxdb/bucket.rb b/lib/latias/influxdb/bucket.rb index a9d0848..df63028 100644 --- a/lib/latias/influxdb/bucket.rb +++ b/lib/latias/influxdb/bucket.rb @@ -10,13 +10,13 @@ module Latias attr_reader :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision def initialize - set_default + @query = '' end def call - all_query = "from(bucket: \"#{@bucket}\") #{@query}" + all_query = "from(bucket: \"#{use_value('bucket')}\") #{@query}" @query = '' - @client.create_query_api.query(query: all_query, org: @org) + @client.create_query_api.query(query: all_query, org: use_value('org')) end def yield(query) @@ -38,27 +38,31 @@ module Latias @query += query end + def client_connection + @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 + + def client_reconnection + client_connection + end + private - def set_default - @query = '' - @url = 'http://localhost:8086' - @token = 'token' - @bucket = 'bucket' - @org = 'org' - @use_ssl = false - @verify_mode = OpenSSL::SSL::VERIFY_NONE + def use_value(key) + b = get_binding("self") + b.eval("@#{key}") || Latias::Influxdb.configuration.send(key) end def new_command '|> ' end - def client_connection - @client = InfluxDB2::Client.new(@url, @token, - use_ssl: @use_ssl, - verify_mode: @verify_mode.present? ? @verify_mode : OpenSSL::SSL::VERIFY_NONE, - precision: InfluxDB2::WritePrecision::NANOSECOND) + def get_binding(param) + binding end end end diff --git a/lib/latias/influxdb/configuration.rb b/lib/latias/influxdb/configuration.rb index 158b044..2b1fba0 100644 --- a/lib/latias/influxdb/configuration.rb +++ b/lib/latias/influxdb/configuration.rb @@ -5,14 +5,19 @@ module Latias module Influxdb # Configuration class Configuration - attr_accessor :async + attr_accessor :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision def initialize - @async = true + @query = '' + @url = 'http://localhost:8086' + @token = 'token' + @bucket = 'bucket' + @org = 'org' + @use_ssl = false + @verify_mode = OpenSSL::SSL::VERIFY_NONE end end - # Borrow syntax from Clearance: https://github.com/thoughtbot/clearance/blob/master/lib/clearance/configuration.rb def self.configuration @configuration ||= Configuration.new end diff --git a/lib/latias/influxdb/version.rb b/lib/latias/influxdb/version.rb index a999af7..0e7640e 100644 --- a/lib/latias/influxdb/version.rb +++ b/lib/latias/influxdb/version.rb @@ -2,6 +2,6 @@ module Latias module Influxdb - VERSION = '0.3.0' + VERSION = '1.0.0-bata' end end diff --git a/lib/rails/generators/latias/influxdb/templates/initializer.rb b/lib/rails/generators/latias/influxdb/templates/initializer.rb index 04f8434..8c5930f 100644 --- a/lib/rails/generators/latias/influxdb/templates/initializer.rb +++ b/lib/rails/generators/latias/influxdb/templates/initializer.rb @@ -1,3 +1,9 @@ Latias::Influxdb.configure do |config| - # Latias::Influxdb.configure + # default + # config.url = 'http://localhost:8086' + # config.token = 'token' + # config.bucket = 'bucket' + # config.org = 'org' + # config.use_ssl = false + # config.verify_mode = OpenSSL::SSL::VERIFY_NONE end -- GitLab