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 +4 -4
- data/README.md +77 -0
- data/lib/latias/influxdb.rb +1 -0
- data/lib/latias/influxdb/action_bucket/base.rb +50 -0
- data/lib/latias/influxdb/bucket.rb +16 -38
- data/lib/latias/influxdb/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc3e3a6225c4dcd1014d3fa9e7f6dfea88c06d67a29e0e0b2f9ae251e69891d6
|
4
|
+
data.tar.gz: 5dbc46576db10856c87812309fa326bf9b4c35d9fa079b194a0393ece51412a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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).
|
data/lib/latias/influxdb.rb
CHANGED
@@ -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
|
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
|
-
|
20
|
-
self
|
11
|
+
merge_query('yield', query)
|
21
12
|
end
|
22
13
|
|
23
14
|
def range(query)
|
24
|
-
|
25
|
-
self
|
15
|
+
merge_query('range', query)
|
26
16
|
end
|
27
17
|
|
28
18
|
def filter(query)
|
29
|
-
|
30
|
-
self
|
19
|
+
merge_query('filter', query)
|
31
20
|
end
|
32
21
|
|
33
|
-
def
|
34
|
-
|
22
|
+
def duplicate(query)
|
23
|
+
merge_query('duplicate', query)
|
35
24
|
end
|
36
25
|
|
37
|
-
def
|
38
|
-
|
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
|
47
|
-
|
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
|
58
|
-
|
34
|
+
def raw_query(query)
|
35
|
+
@query += query
|
36
|
+
self
|
59
37
|
end
|
60
38
|
|
61
|
-
def
|
62
|
-
|
39
|
+
def client_reconnection
|
40
|
+
client_connection
|
63
41
|
end
|
64
42
|
end
|
65
43
|
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.
|
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.
|
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.
|
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
|