mirror of
https://github.com/jimeh/redistat.git
synced 2026-02-19 13:26:39 +00:00
78 lines
1.5 KiB
Ruby
78 lines
1.5 KiB
Ruby
module Redistat
|
|
module Model
|
|
include Database
|
|
include Options
|
|
|
|
def self.included(base)
|
|
base.extend(self)
|
|
end
|
|
|
|
|
|
#
|
|
# statistics store/fetch methods
|
|
#
|
|
|
|
def store(label, stats = {}, date = nil, opts = {}, meta = {})
|
|
Event.new(self.name, label, date, stats, options.merge(opts), meta).save
|
|
end
|
|
alias :event :store
|
|
|
|
def fetch(label, from, till, opts = {})
|
|
find(label, from, till, opts).all
|
|
end
|
|
alias :lookup :fetch
|
|
|
|
def find(label, from, till, opts = {})
|
|
Finder.new( { :scope => self.name,
|
|
:label => label,
|
|
:from => from,
|
|
:till => till }.merge(options.merge(opts)) )
|
|
end
|
|
|
|
def find_event(event_id)
|
|
Event.find(self.name, event_id)
|
|
end
|
|
|
|
|
|
#
|
|
# options methods
|
|
#
|
|
|
|
option_accessor :depth
|
|
option_accessor :scope
|
|
option_accessor :store_event
|
|
option_accessor :hashed_label
|
|
option_accessor :label_indexing
|
|
|
|
alias :class_name :scope
|
|
|
|
def expire(exp = nil)
|
|
if !exp.nil?
|
|
options[:expire] = exp.is_a?(Hash) ? exp : Hash.new(exp)
|
|
else
|
|
options[:expire]
|
|
end
|
|
end
|
|
|
|
def connect_to(opts = {})
|
|
Connection.create(opts.merge(:ref => name))
|
|
options[:connection_ref] = name
|
|
end
|
|
|
|
|
|
#
|
|
# resource access methods
|
|
#
|
|
|
|
def connection
|
|
db(options[:connection_ref])
|
|
end
|
|
alias :redis :connection
|
|
|
|
def name
|
|
options[:scope] || (@name ||= self.to_s)
|
|
end
|
|
|
|
end
|
|
end
|