'use strict';
|
|
|
|
/**
|
|
* methods a collection must implement
|
|
*/
|
|
|
|
var methods = [
|
|
'find'
|
|
, 'findOne'
|
|
, 'update'
|
|
, 'updateMany',
|
|
, 'updateOne'
|
|
, 'replaceOne'
|
|
, 'remove'
|
|
, 'count'
|
|
, 'distinct'
|
|
, 'findAndModify'
|
|
, 'aggregate'
|
|
, 'findStream'
|
|
, 'deleteOne'
|
|
, 'deleteMany'
|
|
];
|
|
|
|
/**
|
|
* Collection base class from which implementations inherit
|
|
*/
|
|
|
|
function Collection () {}
|
|
|
|
for (var i = 0, len = methods.length; i < len; ++i) {
|
|
var method = methods[i];
|
|
Collection.prototype[method] = notImplemented(method);
|
|
}
|
|
|
|
module.exports = exports = Collection;
|
|
Collection.methods = methods;
|
|
|
|
/**
|
|
* creates a function which throws an implementation error
|
|
*/
|
|
|
|
function notImplemented (method) {
|
|
return function () {
|
|
throw new Error('collection.' + method + ' not implemented');
|
|
}
|
|
}
|