lots of changes and cleanup, among others created

a Redistat::Scope object
This commit is contained in:
2010-07-23 21:46:14 +03:00
parent 22515337f6
commit 9c9b784a8a
8 changed files with 106 additions and 41 deletions

View File

@@ -11,13 +11,14 @@ require "redistat/event"
require "redistat/key"
require "redistat/label"
require "redistat/date"
require "redistat/scope"
module Redistat
KEY_NEXT_EVENT_ID = "Redistat.next_event_id"
KEY_EVENT_PREFIX = "Redistat.event:"
KEY_LEBELS_PREFIX = "Redistat.lables:"
KEY_EVENT_IDS_SUFFIX = ".event_ids"
KEY_NEXT_ID = ".next_id"
KEY_EVENT = ".event:"
KEY_LEBELS = "Redistat.lables:"
KEY_EVENT_IDS = ".event_ids"
# Provides access to the Redis database. This is shared accross all models and instances.
def redis

View File

@@ -28,19 +28,19 @@ module Redistat
def save
return false if !self.new?
@id = self.class.next_id
#TODO store sumarized stats
if @options[:store_event]
db.hmset("#{KEY_EVENT_PREFIX}#{@id}",
:scope, self.scope,
:label, self.label,
:date, self.date.to_time.to_s,
:stats, self.stats.to_json,
:meta, self.meta.to_json,
:options, self.options.to_json)
db.sadd "#{self.scope}#{KEY_EVENT_IDS_SUFFIX}", @id
@id = self.next_id
db.hmset("#{self.scope}#{KEY_EVENT}#{@id}",
"scope", self.scope,
"label", self.label,
"date", self.date.to_time.to_s,
"stats", self.stats.to_json,
"meta", self.meta.to_json,
"options", self.options.to_json)
db.sadd "#{self.scope}#{KEY_EVENT_IDS}", @id
end
@new = false
self
@@ -50,15 +50,15 @@ module Redistat
self.new(*args).save
end
def self.next_id
db.incr(KEY_NEXT_EVENT_ID)
end
def self.find(id)
event = db.hgetall "#{KEY_EVENT_PREFIX}#{id}"
def self.find(scope, id)
event = db.hgetall "#{scope}#{KEY_EVENT}#{id}"
return nil if event.size == 0
self.new( event["scope"], event["label"], event["date"], JSON.parse(event["stats"]),
JSON.parse(event["meta"]), JSON.parse(event["options"]), false )
JSON.parse(event["meta"]), JSON.parse(event["options"]), false )
end
def next_id
db.incr("#{self.scope}#{KEY_NEXT_ID}")
end
def date

View File

@@ -11,7 +11,7 @@ module Redistat
end
def save
@saved = (db.set("#{KEY_LEBELS_PREFIX}#{@hash}", @name) == "OK")
@saved = (db.set("#{KEY_LEBELS}#{@hash}", @name) == "OK")
self
end

18
lib/redistat/scope.rb Normal file
View File

@@ -0,0 +1,18 @@
module Redistat
class Scope
include Database
def initialize(name)
@name = name.to_s
end
def to_s
@name
end
def next_id
db.incr("#{@name}#{KEY_NEXT_ID}")
end
end
end