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.
		
		
		
		
		
			
		
			
				
					49 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					49 lines
				
				1.1 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | const CommandOperation = require('./command'); | ||
|  | const levelValues = new Set(['off', 'slow_only', 'all']); | ||
|  | 
 | ||
|  | class SetProfilingLevelOperation extends CommandOperation { | ||
|  |   constructor(db, level, options) { | ||
|  |     let profile = 0; | ||
|  | 
 | ||
|  |     if (level === 'off') { | ||
|  |       profile = 0; | ||
|  |     } else if (level === 'slow_only') { | ||
|  |       profile = 1; | ||
|  |     } else if (level === 'all') { | ||
|  |       profile = 2; | ||
|  |     } | ||
|  | 
 | ||
|  |     super(db, options); | ||
|  |     this.level = level; | ||
|  |     this.profile = profile; | ||
|  |   } | ||
|  | 
 | ||
|  |   _buildCommand() { | ||
|  |     const profile = this.profile; | ||
|  | 
 | ||
|  |     // Set up the profile number
 | ||
|  |     const command = { profile }; | ||
|  | 
 | ||
|  |     return command; | ||
|  |   } | ||
|  | 
 | ||
|  |   execute(callback) { | ||
|  |     const level = this.level; | ||
|  | 
 | ||
|  |     if (!levelValues.has(level)) { | ||
|  |       return callback(new Error('Error: illegal profiling level value ' + level)); | ||
|  |     } | ||
|  | 
 | ||
|  |     super.execute((err, doc) => { | ||
|  |       if (err == null && doc.ok === 1) return callback(null, level); | ||
|  |       return err != null | ||
|  |         ? callback(err, null) | ||
|  |         : callback(new Error('Error with profile command'), null); | ||
|  |     }); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = SetProfilingLevelOperation; |