class Perus::Server::Metric
Public Class Methods
add(name, system_id, type, file_data = nil)
click to toggle source
# File lib/perus/server/models/metric.rb, line 57 def self.add(name, system_id, type, file_data = nil) existing = Metric.where(system_id: system_id, name: name, type: type).first if existing return if type != 'file' record = existing else record = Metric.new(system_id: system_id, name: name, type: type) end record.file = file_data record.save end
add_file(name, system_id, file_data)
click to toggle source
# File lib/perus/server/models/metric.rb, line 79 def self.add_file(name, system_id, file_data) self.add(name, system_id, 'file', file_data) end
add_numeric(name, system_id)
click to toggle source
# File lib/perus/server/models/metric.rb, line 71 def self.add_numeric(name, system_id) self.add(name, system_id, 'num') end
add_string(name, system_id)
click to toggle source
# File lib/perus/server/models/metric.rb, line 75 def self.add_string(name, system_id) self.add(name, system_id, 'str') end
Public Instance Methods
after_destroy()
click to toggle source
Calls superclass method
# File lib/perus/server/models/metric.rb, line 52 def after_destroy super File.unlink(path) if file && File.exists?(path) end
file?()
click to toggle source
# File lib/perus/server/models/metric.rb, line 17 def file? type == 'file' end
num_values_over_period(period)
click to toggle source
# File lib/perus/server/models/metric.rb, line 47 def num_values_over_period(period) values = values_over_period(period) values.map(&:num_value) end
numeric?()
click to toggle source
# File lib/perus/server/models/metric.rb, line 9 def numeric? type == 'num' end
path()
click to toggle source
# File lib/perus/server/models/metric.rb, line 27 def path File.join(system.uploads_dir, file['filename']) end
string?()
click to toggle source
# File lib/perus/server/models/metric.rb, line 13 def string? type == 'str' end
url()
click to toggle source
# File lib/perus/server/models/metric.rb, line 21 def url prefix = URI(Server.options.uploads_url) path = File.join(system_id.to_s, file['filename']) (prefix + path).to_s end
values_dataset()
click to toggle source
# File lib/perus/server/models/metric.rb, line 31 def values_dataset system.values_dataset.where(metric: name) end
values_over_period(period)
click to toggle source
# File lib/perus/server/models/metric.rb, line 35 def values_over_period(period) if period.keys.include?(:hours) min_timeout = Time.now.to_i - (period[:hours] * 60 * 60) elsif period.keys.include?(:mins) min_timeout = Time.now.to_i - (period[:mins] * 60) else raise 'invalid period - must be :hours or :mins' end values_dataset.where("timestamp >= #{min_timeout}") end