25 lines
		
	
	
		
			566 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			566 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | import _ from 'lodash'; | ||
|  | import { isMongoId } from 'validator'; | ||
|  | 
 | ||
|  | class MongoIds { | ||
|  |   constructor() { | ||
|  |     this.knownIds = []; | ||
|  |   } | ||
|  |   check(id, title) { | ||
|  |     if (!isMongoId(id)) { | ||
|  |       throw new Error(`Expected a valid ObjectId for ${title}, but got ${id}`); | ||
|  |     } | ||
|  |     const idIndex = _.findIndex(this.knownIds, existing => id === existing); | ||
|  |     if (idIndex !== -1) { | ||
|  |       throw new Error(`
 | ||
|  |     All challenges must have a unique id. | ||
|  | 
 | ||
|  |     The id for ${title} is already assigned | ||
|  |     `);
 | ||
|  |     } | ||
|  |     this.knownIds = [ ...this.knownIds, id ]; | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | export default MongoIds; |