latias-influxdb 1.0.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: 628887438811d27b302005eea23f65ef70c4f3d7d841b23feb4be41c839deadc
4
- data.tar.gz: f1c53f167d7cf896ff38927d8e7e52f59a186972909284ce8641fd0379b3e8e4
3
+ metadata.gz: cc3e3a6225c4dcd1014d3fa9e7f6dfea88c06d67a29e0e0b2f9ae251e69891d6
4
+ data.tar.gz: 5dbc46576db10856c87812309fa326bf9b4c35d9fa079b194a0393ece51412a2
5
5
  SHA512:
6
- metadata.gz: db9a7a7565326d5d51d60d5a33972d303bb2788d4b8533d25ae8565ba07be3c45ff92be3b993cd9d724f90ea8719c5a6a50575724e0db85761e2f164cc2731ef
7
- data.tar.gz: df32c1c7092cb94c2ffdc8e28822844dda23da5915dae6ba238304e6432789157b1dbf05940a7b9b3a499b32e019d87ed70207d365f85f17b24c9df5ee5d1f6a
6
+ metadata.gz: 0c398d6da63502e753d75a273cf50d1961a50fecc38ca6616c96133accea9e585d78b7af8ec050d9dfc440b9214b42d35c056937d8710208e1935e196d08c5a2
7
+ data.tar.gz: e2693590650f6cffb0548c155c2d00175bf85b9db023b34714cca5211d98e26d370b110011532420b41678bd8db5f328c1e363f36081c3c46b9158590347e58b
data/README.md CHANGED
@@ -108,6 +108,83 @@ mdb_energy_bucket.range('start: -1m').filter('fn: (r) => r["_measurement"] == "c
108
108
  mdb_energy_bucket.call
109
109
  ```
110
110
 
111
+ And you can add methods in model
112
+
113
+ ```ruby
114
+
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
124
+
125
+ def one_minute_before
126
+ range('start: -1m')
127
+ end
128
+
129
+ def find_cpu
130
+ filter('fn: (r) => r["_measurement"] == "cpu"')
131
+ end
132
+
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
142
+ ```
143
+
144
+ ## Method
145
+
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
181
+
182
+ def execute(query)
183
+ @query = query
184
+ end
185
+
186
+ ```
187
+
111
188
  ## License
112
189
 
113
190
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -4,6 +4,7 @@ require 'latias/influxdb/bucket'
4
4
  require 'latias/influxdb/version'
5
5
  require 'latias/influxdb/engine'
6
6
  require "latias/influxdb/configuration"
7
+ require "latias/influxdb/action_bucket/base"
7
8
 
8
9
  module Latias
9
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,65 +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 call
13
- all_query = "from(bucket: \"#{use_value('bucket')}\") #{@query}"
14
- @query = ''
15
- @client.create_query_api.query(query: all_query, org: use_value('org'))
16
- end
17
-
9
+ class Bucket < Latias::Influxdb::ActionBucket::Base
18
10
  def yield(query)
19
- @query += "#{new_command} yield(#{query})"
20
- self
11
+ merge_query('yield', query)
21
12
  end
22
13
 
23
14
  def range(query)
24
- @query += "#{new_command} range(#{query})"
25
- self
15
+ merge_query('range', query)
26
16
  end
27
17
 
28
18
  def filter(query)
29
- @query += "#{new_command} filter(#{query})"
30
- self
19
+ merge_query('filter', query)
31
20
  end
32
21
 
33
- def real_query(query)
34
- @query += query
22
+ def duplicate(query)
23
+ merge_query('duplicate', query)
35
24
  end
36
25
 
37
- def client_connection
38
- @query = ''
39
- @client = InfluxDB2::Client.new(use_value('url'), use_value('token'),
40
- use_ssl: use_value('use_ssl'),
41
- verify_mode: use_value('verify_mode'),
42
- precision: InfluxDB2::WritePrecision::NANOSECOND)
43
- self
26
+ def merge_query(key, query)
27
+ raw_function "#{key}(#{query})"
44
28
  end
45
29
 
46
- def client_reconnection
47
- client_connection
48
- end
49
-
50
- private
51
-
52
- def use_value(key)
53
- b = get_binding("self")
54
- b.eval("@#{key}") || Latias::Influxdb.configuration.send(key)
30
+ def raw_function(function)
31
+ raw_query "#{new_command} #{function}"
55
32
  end
56
33
 
57
- def new_command
58
- '|> '
34
+ def raw_query(query)
35
+ @query += query
36
+ self
59
37
  end
60
38
 
61
- def get_binding(param)
62
- binding
39
+ def client_reconnection
40
+ client_connection
63
41
  end
64
42
  end
65
43
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Latias
4
4
  module Influxdb
5
- VERSION = '1.0.1'
5
+ VERSION = '1.1.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: latias-influxdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nattanon
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.16.0.pre.2765
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: 1.16.0.pre.2765
26
+ version: 1.16.0.pre.2890
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -50,6 +50,7 @@ files:
50
50
  - Rakefile
51
51
  - config/routes.rb
52
52
  - lib/latias/influxdb.rb
53
+ - lib/latias/influxdb/action_bucket/base.rb
53
54
  - lib/latias/influxdb/bucket.rb
54
55
  - lib/latias/influxdb/configuration.rb
55
56
  - lib/latias/influxdb/engine.rb