MongoDatabase class
class MongoDatabase {
Db _db;
Future _conn;
List<Future> init = [];
DbCollection _lock;
Cache cache;
MongoDatabase(String url, {Cache this.cache: dummyCache} ) {
_db = new Db(url);
_conn = _db.open(); // open connection to database
init.add(_conn);
init.add(_conn.then((_) {
_lock = _db.collection(LOCK_COLLECTION_NAME);
return true;
}));
}
void close() {
Future.wait(init).then((_) => _db.close());
}
void create_collection(String collectionName) {
init.add(_conn.then((_) =>
_db.createIndex(historyCollectionName(collectionName), key: 'version',
unique: true)));
}
/**
* Creates index on chosen collection and corresponding indexes on collection
* history. keys is a map in form {field_name: 1 or -1} with 1/-1 specifying
* ascending/descending order (same as the map passed to mongo function
* ensureIndex).
*/
void createIndex(String collectionName, Map keys, {unique: false}) {
Map beforeKeys = {};
Map afterKeys = {};
keys.forEach((key, val) {
beforeKeys['before.$key'] = val;
afterKeys['after.$key'] = val;
});
beforeKeys['version'] = 1;
afterKeys['version'] = 1;
init.add(_conn.then((_) =>
_db.createIndex(historyCollectionName(collectionName),
keys: beforeKeys)));
init.add(_conn.then((_) =>
_db.createIndex(historyCollectionName(collectionName),
keys: afterKeys)));
if (keys.isNotEmpty) {
init.add(_conn.then((_) =>
_db.createIndex(collectionName, keys: keys, unique: unique)));
}
}
MongoProvider collection(String collectionName) {
DbCollection collection = _db.collection(collectionName);
DbCollection collectionHistory =
_db.collection(historyCollectionName(collectionName));
return new MongoProvider(collection, collectionHistory, _lock, cache);
}
Future dropCollection(String collectionName) =>
_conn.then((_) => Future.wait([
_db.collection(collectionName).drop(),
_db.collection(historyCollectionName(collectionName)).drop()
]));
Future removeLocks() => _lock.drop();
}
Constructors
new MongoDatabase(String url, {Cache cache: dummyCache}) #
Creates a new Object instance.
Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.
docs inherited from Object
MongoDatabase(String url, {Cache this.cache: dummyCache} ) {
_db = new Db(url);
_conn = _db.open(); // open connection to database
init.add(_conn);
init.add(_conn.then((_) {
_lock = _db.collection(LOCK_COLLECTION_NAME);
return true;
}));
}
Methods
void close() #
void close() {
Future.wait(init).then((_) => _db.close());
}
MongoProvider collection(String collectionName) #
MongoProvider collection(String collectionName) {
DbCollection collection = _db.collection(collectionName);
DbCollection collectionHistory =
_db.collection(historyCollectionName(collectionName));
return new MongoProvider(collection, collectionHistory, _lock, cache);
}
void create_collection(String collectionName) #
void create_collection(String collectionName) {
init.add(_conn.then((_) =>
_db.createIndex(historyCollectionName(collectionName), key: 'version',
unique: true)));
}
void createIndex(String collectionName, Map keys, {unique: false}) #
Creates index on chosen collection and corresponding indexes on collection history. keys is a map in form {field_name: 1 or -1} with 1/-1 specifying ascending/descending order (same as the map passed to mongo function ensureIndex).
void createIndex(String collectionName, Map keys, {unique: false}) {
Map beforeKeys = {};
Map afterKeys = {};
keys.forEach((key, val) {
beforeKeys['before.$key'] = val;
afterKeys['after.$key'] = val;
});
beforeKeys['version'] = 1;
afterKeys['version'] = 1;
init.add(_conn.then((_) =>
_db.createIndex(historyCollectionName(collectionName),
keys: beforeKeys)));
init.add(_conn.then((_) =>
_db.createIndex(historyCollectionName(collectionName),
keys: afterKeys)));
if (keys.isNotEmpty) {
init.add(_conn.then((_) =>
_db.createIndex(collectionName, keys: keys, unique: unique)));
}
}