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