latias-influxdb 0.2.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9ed54fb50c1e6f28a7896a5991a251a9a80700121e46dde00d8b717ed3dcfc80
4
- data.tar.gz: 18545511343c762ae0b5ec30f8fd728c2118abbde2d234398ec6676e1b275278
3
+ metadata.gz: cc3e3a6225c4dcd1014d3fa9e7f6dfea88c06d67a29e0e0b2f9ae251e69891d6
4
+ data.tar.gz: 5dbc46576db10856c87812309fa326bf9b4c35d9fa079b194a0393ece51412a2
5
5
  SHA512:
6
- metadata.gz: e1b07cde58038611fecb11761473659969a2129db6753a2afdb36882058bfea7e4d82159f318ec5b46f28a8bfe8eb6d4c33ebe5cbee4746fe90fe98e388c3fd8
7
- data.tar.gz: 3a9aa7122cd7c2618af27dd067bce534bb309261b17a6c130eee6eb38abc9a8f5bcd2fdbef4519f212ccc51743b37606cae4fe2d6552f6eaf0a6245b1e926499
6
+ metadata.gz: 0c398d6da63502e753d75a273cf50d1961a50fecc38ca6616c96133accea9e585d78b7af8ec050d9dfc440b9214b42d35c056937d8710208e1935e196d08c5a2
7
+ data.tar.gz: e2693590650f6cffb0548c155c2d00175bf85b9db023b34714cca5211d98e26d370b110011532420b41678bd8db5f328c1e363f36081c3c46b9158590347e58b
data/README.md CHANGED
@@ -2,12 +2,81 @@
2
2
 
3
3
  Ruby lib for use influxdb version 2 on Ruby language
4
4
 
5
- ## Usage
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'latias-influxdb'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+
21
+ ```bash
22
+ $ gem install latias-influxdb
23
+ ```
24
+
25
+ Check version
26
+
27
+ ```bash
28
+ rails latias:influxdb:verion
29
+ ```
30
+
31
+ ## Configuration & Usage
32
+
33
+ ### Configuration
34
+
35
+ First generating config file
36
+
37
+ ```bash
38
+ rails g latias:influxdb:install
39
+ ```
40
+
41
+ ```ruby
42
+ # config/initializers/latias_influxdb
43
+ Latias::Influxdb.configure do |config|
44
+ # default
45
+ # config.url = 'http://localhost:8086'
46
+ # config.token = 'token'
47
+ # config.bucket = 'bucket'
48
+ # config.org = 'org'
49
+ # config.use_ssl = false
50
+ # config.verify_mode = OpenSSL::SSL::VERIFY_NONE
51
+ end
52
+ ```
53
+
54
+ ### Usage
55
+
56
+ You can use
57
+
58
+ <!--
59
+
60
+ # config.url = 'http://188.166.252.165:8086'
61
+ # config.token = 'YyD4UGu4_Xn0CIVsycFdjaQVd7m1g5wRp0z2BCfBSyNL6-GHqqyZRePGy46B2m8Zg6jgqHAN_J6jyhCmvGeQRA=='
62
+ # config.bucket = 'MDBEnergy'
63
+ # config.org = 'MDBEnergy'
64
+
65
+ -->
66
+
67
+ ```ruby
68
+ bucket = Latias::Influxdb::Bucket.new
69
+ bucket.client_connection
70
+ # or bucket = Latias::Influxdb::Bucket.new.client_connection
71
+ bucket.range('start: -1m').filter('fn: (r) => r["_measurement"] == "cpu"')
72
+ bucket.call
73
+ ```
74
+
75
+ Or use with model
6
76
 
7
77
  <!-- ```ruby
8
78
  class MdbEnergyBucket < Latias::Influxdb::Bucket
9
79
  def initialize
10
- super
11
80
  @url = 'http://188.166.252.165:8086'
12
81
  @token = 'YyD4UGu4_Xn0CIVsycFdjaQVd7m1g5wRp0z2BCfBSyNL6-GHqqyZRePGy46B2m8Zg6jgqHAN_J6jyhCmvGeQRA=='
13
82
  @bucket = 'MDBEnergy'
@@ -25,7 +94,6 @@ mdb_energy_bucket.call
25
94
  ```ruby
26
95
  class MdbEnergyBucket < Latias::Influxdb::Bucket
27
96
  def initialize
28
- super
29
97
  @url = 'http://localhost:8086'
30
98
  @token = 'your token'
31
99
  @bucket = 'MDBEnergy'
@@ -40,36 +108,90 @@ mdb_energy_bucket.range('start: -1m').filter('fn: (r) => r["_measurement"] == "c
40
108
  mdb_energy_bucket.call
41
109
  ```
42
110
 
43
- ## Installation
44
-
45
- Add this line to your application's Gemfile:
111
+ And you can add methods in model
46
112
 
47
113
  ```ruby
48
- gem 'latias-influxdb'
49
- ```
50
114
 
51
- And then execute:
115
+ class MdbEnergyBucket < Latias::Influxdb::Bucket
116
+ def initialize
117
+ @url = 'http://localhost:8086'
118
+ @token = 'your token'
119
+ @bucket = 'MDBEnergy'
120
+ @org = 'MDBEnergy'
121
+ @use_ssl = false
122
+ client_connection
123
+ end
52
124
 
53
- ```bash
54
- $ bundle
55
- ```
125
+ def one_minute_before
126
+ range('start: -1m')
127
+ end
56
128
 
57
- Or install it yourself as:
129
+ def find_cpu
130
+ filter('fn: (r) => r["_measurement"] == "cpu"')
131
+ end
58
132
 
59
- ```bash
60
- $ gem install latias-influxdb
133
+ def my_cpu_value
134
+ one_minute_before.find_cpu.call
135
+ end
136
+ end
137
+
138
+ mdb_energy_bucket = MdbEnergyBucket.new
139
+ mdb_energy_bucket.one_minute_before.find_cpu.call
140
+ # OR
141
+ mdb_energy_bucket.my_cpu_value
61
142
  ```
62
143
 
63
- Check version
144
+ ## Method
64
145
 
65
- ```bash
66
- rails latias:influxdb:verion
67
- ```
146
+ ```ruby
147
+ def yield(query)
148
+ merge_query('yield', query)
149
+ end
150
+
151
+ def range(query)
152
+ merge_query('range', query)
153
+ end
154
+
155
+ def filter(query)
156
+ merge_query('filter', query)
157
+ end
158
+
159
+ def duplicate(query)
160
+ merge_query('duplicate', query)
161
+ end
162
+
163
+ def merge_query(key, query)
164
+ raw_function "#{key}(#{query})"
165
+ end
166
+
167
+ def raw_function(function)
168
+ raw_query "#{new_command} #{function}"
169
+ end
170
+
171
+ def raw_query(query)
172
+ @query += query
173
+ self
174
+ end
175
+
176
+ def client_reconnection
177
+ client_connection
178
+ end
179
+
180
+ # And
68
181
 
69
- ## Contributing
182
+ def execute(query)
183
+ @query = query
184
+ end
70
185
 
71
- Contribution directions go here.
186
+ ```
72
187
 
73
188
  ## License
74
189
 
75
190
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
191
+
192
+ ## Build and push GEM
193
+
194
+ ```bash
195
+ gem build latias-influxdb.gemspec
196
+ gem push latias-influxdb-xx.xx.xx.gem
197
+ ```
@@ -3,6 +3,8 @@
3
3
  require 'latias/influxdb/bucket'
4
4
  require 'latias/influxdb/version'
5
5
  require 'latias/influxdb/engine'
6
+ require "latias/influxdb/configuration"
7
+ require "latias/influxdb/action_bucket/base"
6
8
 
7
9
  module Latias
8
10
  # Influxdb
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'influxdb-client'
4
+
5
+ module Latias
6
+ # Influxdb
7
+ module Influxdb
8
+ # Bucket
9
+ module ActionBucket
10
+ # base
11
+ class Base
12
+ attr_reader :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision, :query, :client
13
+
14
+ def execute(query)
15
+ @query = query
16
+ end
17
+
18
+ def call
19
+ all_query = "from(bucket: \"#{use_value('bucket')}\") #{@query}"
20
+ @query = ''
21
+ @client.create_query_api.query(query: all_query, org: use_value('org'))
22
+ end
23
+
24
+ def client_connection
25
+ @query = ''
26
+ @client = InfluxDB2::Client.new(use_value('url'), use_value('token'),
27
+ use_ssl: use_value('use_ssl'),
28
+ verify_mode: use_value('verify_mode'),
29
+ precision: InfluxDB2::WritePrecision::NANOSECOND)
30
+ self
31
+ end
32
+
33
+ private
34
+
35
+ def use_value(key)
36
+ b = get_binding("self")
37
+ b.eval("@#{key}") || Latias::Influxdb.configuration.send(key)
38
+ end
39
+
40
+ def new_command
41
+ '|> '
42
+ end
43
+
44
+ def get_binding(param)
45
+ binding
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,64 +1,43 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'influxdb-client'
3
+ require "latias/influxdb/action_bucket/base"
4
4
 
5
5
  module Latias
6
6
  # Influxdb
7
7
  module Influxdb
8
8
  # Bucket
9
- class Bucket
10
- attr_reader :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision
11
-
12
- def initialize
13
- set_default
14
- end
15
-
16
- def call
17
- all_query = "from(bucket: \"#{@bucket}\") #{@query}"
18
- @query = ''
19
- @client.create_query_api.query(query: all_query, org: @org)
20
- end
21
-
9
+ class Bucket < Latias::Influxdb::ActionBucket::Base
22
10
  def yield(query)
23
- @query += "#{new_command} yield(#{query})"
24
- self
11
+ merge_query('yield', query)
25
12
  end
26
13
 
27
14
  def range(query)
28
- @query += "#{new_command} range(#{query})"
29
- self
15
+ merge_query('range', query)
30
16
  end
31
17
 
32
18
  def filter(query)
33
- @query += "#{new_command} filter(#{query})"
34
- self
19
+ merge_query('filter', query)
35
20
  end
36
21
 
37
- def real_query(query)
38
- @query += query
22
+ def duplicate(query)
23
+ merge_query('duplicate', query)
39
24
  end
40
25
 
41
- private
26
+ def merge_query(key, query)
27
+ raw_function "#{key}(#{query})"
28
+ end
42
29
 
43
- def set_default
44
- @query = ''
45
- @url = 'http://localhost:8086'
46
- @token = 'token'
47
- @bucket = 'bucket'
48
- @org = 'org'
49
- @use_ssl = false
50
- @verify_mode = OpenSSL::SSL::VERIFY_NONE
30
+ def raw_function(function)
31
+ raw_query "#{new_command} #{function}"
51
32
  end
52
33
 
53
- def new_command
54
- '|> '
34
+ def raw_query(query)
35
+ @query += query
36
+ self
55
37
  end
56
38
 
57
- def client_connection
58
- @client = InfluxDB2::Client.new(@url, @token,
59
- use_ssl: @use_ssl,
60
- verify_mode: @verify_mode.present? ? @verify_mode : OpenSSL::SSL::VERIFY_NONE,
61
- precision: InfluxDB2::WritePrecision::NANOSECOND)
39
+ def client_reconnection
40
+ client_connection
62
41
  end
63
42
  end
64
43
  end
@@ -5,14 +5,19 @@ module Latias
5
5
  module Influxdb
6
6
  # Configuration
7
7
  class Configuration
8
- attr_accessor :async
8
+ attr_accessor :url, :token, :bucket, :org, :use_ssl, :verify_mode, :precision
9
9
 
10
10
  def initialize
11
- @async = true
11
+ @query = ''
12
+ @url = 'http://localhost:8086'
13
+ @token = 'token'
14
+ @bucket = 'bucket'
15
+ @org = 'org'
16
+ @use_ssl = false
17
+ @verify_mode = OpenSSL::SSL::VERIFY_NONE
12
18
  end
13
19
  end
14
20
 
15
- # Borrow syntax from Clearance: https://github.com/thoughtbot/clearance/blob/master/lib/clearance/configuration.rb
16
21
  def self.configuration
17
22
  @configuration ||= Configuration.new
18
23
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Latias
4
4
  module Influxdb
5
- VERSION = '0.2.1'
5
+ VERSION = '1.1.1'
6
6
  end
7
7
  end
@@ -0,0 +1,19 @@
1
+ require 'rails/generators'
2
+
3
+ module Latias
4
+ module Influxdb
5
+ class InstallGenerator < Rails::Generators::Base
6
+ desc "Description:\n This creates a Rails initializer for latias::InfluxDB::Rails."
7
+
8
+ source_root File.expand_path('templates', __dir__)
9
+
10
+ def copy_initializer_file
11
+ template 'initializer.rb', 'config/initializers/latias_influxdb.rb'
12
+ end
13
+
14
+ def install
15
+ # nothing to do here
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,9 @@
1
1
  Latias::Influxdb.configure do |config|
2
- # Latias::Influxdb.configure
2
+ # default
3
+ # config.url = 'http://localhost:8086'
4
+ # config.token = 'token'
5
+ # config.bucket = 'bucket'
6
+ # config.org = 'org'
7
+ # config.use_ssl = false
8
+ # config.verify_mode = OpenSSL::SSL::VERIFY_NONE
3
9
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latias-influxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nattanon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-08 00:00:00.000000000 Z
11
+ date: 2021-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: influxdb-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.4
19
+ version: 1.16.0.pre.2890
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 6.1.4
26
+ version: 1.16.0.pre.2890
27
27
  - !ruby/object:Gem::Dependency
28
- name: influxdb-client
28
+ name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.16.0.pre.2765
34
- type: :development
33
+ version: 6.1.4
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.16.0.pre.2765
40
+ version: 6.1.4
41
41
  description:
42
42
  email:
43
43
  - nattanon@hospital-os.com
@@ -48,21 +48,14 @@ files:
48
48
  - MIT-LICENSE
49
49
  - README.md
50
50
  - Rakefile
51
- - app/assets/config/latias_influxdb_manifest.js
52
- - app/assets/stylesheets/latias/influxdb/application.css
53
- - app/controllers/latias/influxdb/application_controller.rb
54
- - app/helpers/latias/influxdb/application_helper.rb
55
- - app/jobs/latias/influxdb/application_job.rb
56
- - app/mailers/latias/influxdb/application_mailer.rb
57
- - app/models/latias/influxdb/application_record.rb
58
- - app/views/layouts/latias/influxdb/application.html.erb
59
51
  - config/routes.rb
60
52
  - lib/latias/influxdb.rb
53
+ - lib/latias/influxdb/action_bucket/base.rb
61
54
  - lib/latias/influxdb/bucket.rb
62
55
  - lib/latias/influxdb/configuration.rb
63
56
  - lib/latias/influxdb/engine.rb
64
57
  - lib/latias/influxdb/version.rb
65
- - lib/rails/generators/latias/influxdb/influxdb_generator.rb
58
+ - lib/rails/generators/latias/influxdb/install_generator.rb
66
59
  - lib/rails/generators/latias/influxdb/templates/initializer.rb
67
60
  - lib/tasks/latias/influxdb_tasks.rake
68
61
  homepage: https://gitlab.opensource-technology.com/nattanon/latias-influxdb
@@ -1 +0,0 @@
1
- //= link_directory ../stylesheets/latias/influxdb .css
@@ -1,15 +0,0 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
- * files in this directory. Styles in this file should be added after the last require_* statement.
11
- * It is generally better to create a new file per style scope.
12
- *
13
- *= require_tree .
14
- *= require_self
15
- */
@@ -1,6 +0,0 @@
1
- module Latias
2
- module Influxdb
3
- class ApplicationController < ActionController::Base
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Latias
2
- module Influxdb
3
- module ApplicationHelper
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Latias
2
- module Influxdb
3
- class ApplicationJob < ActiveJob::Base
4
- end
5
- end
6
- end
@@ -1,8 +0,0 @@
1
- module Latias
2
- module Influxdb
3
- class ApplicationMailer < ActionMailer::Base
4
- default from: 'from@example.com'
5
- layout 'mailer'
6
- end
7
- end
8
- end
@@ -1,7 +0,0 @@
1
- module Latias
2
- module Influxdb
3
- class ApplicationRecord < ActiveRecord::Base
4
- self.abstract_class = true
5
- end
6
- end
7
- end
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Latias influxdb</title>
5
- <%= csrf_meta_tags %>
6
- <%= csp_meta_tag %>
7
-
8
- <%= stylesheet_link_tag "latias/influxdb/application", media: "all" %>
9
- </head>
10
- <body>
11
-
12
- <%= yield %>
13
-
14
- </body>
15
- </html>
@@ -1,15 +0,0 @@
1
- require 'rails/generators'
2
-
3
- class InfluxdbGenerator < Rails::Generators::Base
4
- desc "Description:\n This creates a Rails initializer for latias::InfluxDB::Rails."
5
-
6
- source_root File.expand_path('templates', __dir__)
7
-
8
- def copy_initializer_file
9
- template 'initializer.rb', 'config/initializers/latias_influxdb.rb'
10
- end
11
-
12
- def install
13
- # nothing to do here
14
- end
15
- end