diff options
Diffstat (limited to 'storage/mroonga/vendor/groonga/lib/mrb/scripts/database.rb')
-rw-r--r-- | storage/mroonga/vendor/groonga/lib/mrb/scripts/database.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/lib/mrb/scripts/database.rb b/storage/mroonga/vendor/groonga/lib/mrb/scripts/database.rb new file mode 100644 index 00000000000..54d9dc1a631 --- /dev/null +++ b/storage/mroonga/vendor/groonga/lib/mrb/scripts/database.rb @@ -0,0 +1,39 @@ +module Groonga + class Database + def each + context = Context.instance + flags = + TableCursorFlags::ASCENDING | + TableCursorFlags::BY_ID + TableCursor.open(self, :flags => flags) do |cursor| + cursor.each do |id| + object = context[id] + yield(object) if object + end + end + end + + def each_table(options={}) + context = Context.instance + min = options[:prefix] + flags = 0 + if options[:order] == :descending + flags |= TableCursorFlags::DESCENDING + else + flags |= TableCursorFlags::ASCENDING + end + if options[:order_by] == :id + flags |= TableCursorFlags::BY_ID + else + flags |= TableCursorFlags::BY_KEY + end + flags |= TableCursorFlags::PREFIX if min + TableCursor.open(self, :min => min, :flags => flags) do |cursor| + cursor.each do |id| + object = context[id] + yield(object) if object.is_a?(Table) + end + end + end + end +end |