allow [] on DB, Collection instances to get collections/sub-collections
This commit is contained in:
parent
8a6c9635d7
commit
047fc60c91
@ -48,6 +48,17 @@ module XGen
|
|||||||
@hint = nil
|
@hint = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Get a sub-collection of this collection by name.
|
||||||
|
#
|
||||||
|
# Raises InvalidName if an invalid collection name is used.
|
||||||
|
#
|
||||||
|
# :name :: the name of the collection to get
|
||||||
|
def [](name)
|
||||||
|
name = "#{self.name}.#{name}"
|
||||||
|
return Collection.new(self, name) if !db.strict? || db.collection_names.include?(name)
|
||||||
|
raise "Collection #{name} doesn't exist. Currently in strict mode."
|
||||||
|
end
|
||||||
|
|
||||||
# Set hint fields to use and return +self+. hint may be a single field
|
# Set hint fields to use and return +self+. hint may be a single field
|
||||||
# name, array of field names, or a hash (preferably an OrderedHash).
|
# name, array of field names, or a hash (preferably an OrderedHash).
|
||||||
# May be +nil+.
|
# May be +nil+.
|
||||||
|
@ -246,6 +246,7 @@ module XGen
|
|||||||
return Collection.new(self, name) if !strict? || collection_names.include?(name)
|
return Collection.new(self, name) if !strict? || collection_names.include?(name)
|
||||||
raise "Collection #{name} doesn't exist. Currently in strict mode."
|
raise "Collection #{name} doesn't exist. Currently in strict mode."
|
||||||
end
|
end
|
||||||
|
alias_method :[], :collection
|
||||||
|
|
||||||
# Drop collection +name+. Returns +true+ on success or if the
|
# Drop collection +name+. Returns +true+ on success or if the
|
||||||
# collection does not exist, +false+ otherwise.
|
# collection does not exist, +false+ otherwise.
|
||||||
|
@ -31,6 +31,20 @@ class TestCollection < Test::Unit::TestCase
|
|||||||
@@test.drop()
|
@@test.drop()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_collection
|
||||||
|
assert_raise InvalidName do
|
||||||
|
@@db["te$t"]
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_kind_of Collection, @@db["test"]
|
||||||
|
assert_equal @@db["test"].name(), @@db.collection("test").name()
|
||||||
|
assert_equal @@db["test"].name(), @@db[:test].name()
|
||||||
|
|
||||||
|
assert_kind_of Collection, @@db["test"]["foo"]
|
||||||
|
assert_equal @@db["test"]["foo"].name(), @@db.collection("test.foo").name()
|
||||||
|
assert_equal @@db["test"]["foo"].name(), @@db["test.foo"].name()
|
||||||
|
end
|
||||||
|
|
||||||
def test_safe_insert
|
def test_safe_insert
|
||||||
a = {"hello" => "world"}
|
a = {"hello" => "world"}
|
||||||
@@test.insert(a)
|
@@test.insert(a)
|
||||||
|
Loading…
Reference in New Issue
Block a user