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.
		
		
		
		
		
			
		
			
				
					43 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					43 lines
				
				1.2 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | const Aspect = require('./operation').Aspect; | ||
|  | const defineAspects = require('./operation').defineAspects; | ||
|  | const CommandOperation = require('./command'); | ||
|  | const applyWriteConcern = require('../utils').applyWriteConcern; | ||
|  | const handleCallback = require('../utils').handleCallback; | ||
|  | 
 | ||
|  | class DropIndexOperation extends CommandOperation { | ||
|  |   constructor(collection, indexName, options) { | ||
|  |     super(collection.s.db, options, collection); | ||
|  | 
 | ||
|  |     this.collection = collection; | ||
|  |     this.indexName = indexName; | ||
|  |   } | ||
|  | 
 | ||
|  |   _buildCommand() { | ||
|  |     const collection = this.collection; | ||
|  |     const indexName = this.indexName; | ||
|  |     const options = this.options; | ||
|  | 
 | ||
|  |     let cmd = { dropIndexes: collection.collectionName, index: indexName }; | ||
|  | 
 | ||
|  |     // Decorate command with writeConcern if supported
 | ||
|  |     cmd = applyWriteConcern(cmd, { db: collection.s.db, collection }, options); | ||
|  | 
 | ||
|  |     return cmd; | ||
|  |   } | ||
|  | 
 | ||
|  |   execute(callback) { | ||
|  |     // Execute command
 | ||
|  |     super.execute((err, result) => { | ||
|  |       if (typeof callback !== 'function') return; | ||
|  |       if (err) return handleCallback(callback, err, null); | ||
|  |       handleCallback(callback, null, result); | ||
|  |     }); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | defineAspects(DropIndexOperation, Aspect.WRITE_OPERATION); | ||
|  | 
 | ||
|  | module.exports = DropIndexOperation; |