From cfbe58a5097e6d67e9c9862eaff0fa3ed89f5ede Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Wed, 9 Mar 2011 22:48:27 +0000 Subject: [PATCH] support indexing top-level labels too --- lib/redistat/key.rb | 8 +++++--- spec/key_spec.rb | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/redistat/key.rb b/lib/redistat/key.rb index 5444a49..dd78112 100644 --- a/lib/redistat/key.rb +++ b/lib/redistat/key.rb @@ -54,14 +54,16 @@ module Redistat def children db.smembers("#{scope}#{LABEL_INDEX}#{@label}").map { |member| - self.class.new(self.scope, "#{@label}#{GROUP_SEPARATOR}#{member}", self.date, @options) + child_label = [@label, member].reject { |i| i.nil? } + self.class.new(self.scope, child_label.join(GROUP_SEPARATOR), self.date, @options) } end def update_index @label.groups.each do |label| - break if label.parent.nil? - db.sadd("#{scope}#{LABEL_INDEX}#{label.parent}", label.me) + # break if label.parent.nil? + parent = (label.parent || "") + db.sadd("#{scope}#{LABEL_INDEX}#{parent}", label.me) end end diff --git a/spec/key_spec.rb b/spec/key_spec.rb index dd7ff03..56eb126 100644 --- a/spec/key_spec.rb +++ b/spec/key_spec.rb @@ -113,10 +113,14 @@ describe Redistat::Key do key.children.should have(1).item key.children.map { |k| k.label.me }.should == members - members = db.smembers("#{@scope}#{Redistat::LABEL_INDEX}#{key.label.parent}") # checking '' - members.should have(0).item + members = db.smembers("#{@scope}#{Redistat::LABEL_INDEX}") # checking '' + members.should have(1).item + members.should include('message') key.parent.should be_nil + key = Redistat::Key.new("PageViews") + key.children.should have(1).item + key.children.map { |k| k.label.me }.should include('message') end end