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');
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |