Module: InfluxDB::Query::Core

Included in:
Client
Defined in:
lib/influxdb/query/core.rb

Instance Method Summary collapse

Instance Method Details

#batch(&block) ⇒ Object



42
43
44
# File 'lib/influxdb/query/core.rb', line 42

def batch(&block)
  Batch.new self, &block
end

#builderObject



7
8
9
# File 'lib/influxdb/query/core.rb', line 7

def builder
  @builder ||= Builder.new
end

#pingObject



11
12
13
14
# File 'lib/influxdb/query/core.rb', line 11

def ping
  url = URI::Generic.build(path: File.join(config.prefix, '/ping')).to_s
  get url
end

#query(query, params: nil, denormalize: config.denormalize, chunk_size: config.chunk_size, **opts) ⇒ Object

rubocop:disable Metrics/MethodLength



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/influxdb/query/core.rb', line 20

def query( # rubocop:disable Metrics/MethodLength
  query,
  params:       nil,
  denormalize:  config.denormalize,
  chunk_size:   config.chunk_size,
  **opts
)
  query = builder.build(query, params)

  url = full_url("/query".freeze, query_params(query, opts))
  series = fetch_series(get(url, parse: true, json_streaming: !chunk_size.nil?))

  if block_given?
    series.each do |s|
      values = denormalize ? denormalize_series(s) : raw_values(s)
      yield s['name'.freeze], s['tags'.freeze], values
    end
  else
    denormalize ? denormalized_series_list(series) : series
  end
end

#versionObject



16
17
18
# File 'lib/influxdb/query/core.rb', line 16

def version
  ping.header['x-influxdb-version']
end

#write(data, precision, retention_policy = nil, database = nil) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/influxdb/query/core.rb', line 75

def write(data, precision, retention_policy = nil, database = nil)
  params = {
    db:        database || config.database,
    precision: precision || config.time_precision,
  }

  params[:rp] = retention_policy if retention_policy
  url = full_url("/write", params)
  post(url, data)
end

#write_point(series, data, precision = nil, retention_policy = nil, database = nil) ⇒ Object

Example: write_point(‘cpu’, tags: ‘us’, values: 60)



71
72
73
# File 'lib/influxdb/query/core.rb', line 71

def write_point(series, data, precision = nil, retention_policy = nil, database = nil)
  write_points(data.merge(series: series), precision, retention_policy, database)
end

#write_points(data, precision = nil, retention_policy = nil, database = nil) ⇒ Object

Example: write_points([

{
  series: 'cpu',
  tags: { host: 'server_nl', regios: 'us' },
  values: {internal: 5, external: 6},
  timestamp: 1422568543702900257
},
{
  series: 'gpu',
  values: {value: 0.9999},
}

])



59
60
61
62
63
64
65
66
67
# File 'lib/influxdb/query/core.rb', line 59

def write_points(data, precision = nil, retention_policy = nil, database = nil)
  data = data.is_a?(Array) ? data : [data]
  payload = generate_payload(data)
  writer.write(payload, precision, retention_policy, database)
rescue StandardError => e
  raise e unless config.discard_write_errors

  log :error, "Cannot write data: #{e.inspect}"
end