From 898b1feb1402a4bd915fed73a1d8abe235a8e36e Mon Sep 17 00:00:00 2001 From: Aaron Date: Wed, 6 May 2009 20:24:01 -0400 Subject: extracted DbSet --- db/dbhelpers.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'db/dbhelpers.cpp') diff --git a/db/dbhelpers.cpp b/db/dbhelpers.cpp index e46946c1c49..7d0b69e7716 100644 --- a/db/dbhelpers.cpp +++ b/db/dbhelpers.cpp @@ -143,4 +143,35 @@ namespace mongo { deleteObjects(ns, BSONObj(), false); } + void DbSet::reset() { + DBContext c( name_.c_str() ); + if ( nsdetails( name_.c_str() ) ) { + Helpers::emptyCollection( name_.c_str() ); + } else { + string err; + massert( err, userCreateNS( name_.c_str(), BSONObj(), err, false ) ); + } + Helpers::ensureIndex( name_.c_str(), key_, true, "setIdx" ); + } + + bool DbSet::get( const BSONObj &obj ) { + DBContext c( name_.c_str() ); + BSONObj temp; + return Helpers::findOne( name_.c_str(), obj, temp, true ); + } + + void DbSet::set( const BSONObj &obj, bool val ) { + DBContext c( name_.c_str() ); + if ( val ) { + try { + BSONObj k = obj; + theDataFileMgr.insert( name_.c_str(), k ); + } catch ( DBException& ) { + // dup key - already in set + } + } else { + deleteObjects( name_.c_str(), obj, true, false, false ); + } + } + } // namespace mongo -- cgit v1.2.1