File: continuous_query.rb

package info (click to toggle)
ruby-influxdb 0.8.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 424 kB
  • sloc: ruby: 3,530; sh: 61; makefile: 7
file content (31 lines) | stat: -rw-r--r-- 1,038 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module InfluxDB
  module Query
    module ContinuousQuery # :nodoc:
      def list_continuous_queries(database)
        resp = execute("SHOW CONTINUOUS QUERIES", parse: true)
        fetch_series(resp)
          .select { |v| v['name'] == database }
          .fetch(0, {})
          .fetch('values', [])
          .map { |v| { 'name' => v.first, 'query' => v.last } }
      end

      def create_continuous_query(name, database, query, resample_every: nil, resample_for: nil)
        clause = ["CREATE CONTINUOUS QUERY", name, "ON", database]

        if resample_every || resample_for
          clause << "RESAMPLE".freeze
          clause << "EVERY #{resample_every}" if resample_every
          clause << "FOR #{resample_for}"     if resample_for
        end

        clause = clause.join(" ".freeze) << " BEGIN\n".freeze << query << "\nEND".freeze
        execute(clause)
      end

      def delete_continuous_query(name, database)
        execute("DROP CONTINUOUS QUERY \"#{name}\" ON \"#{database}\"")
      end
    end
  end
end