You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					47 lines
				
				785 B
			
		
		
			
		
	
	
					47 lines
				
				785 B
			| 
											3 years ago
										 | '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'); | ||
|  |   }; | ||
|  | } |