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.
		
		
		
		
		
			
		
			
				
					62 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					62 lines
				
				1.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The **ReadConcern** class is a class that represents a MongoDB ReadConcern.
							 | 
						||
| 
								 | 
							
								 * @class
							 | 
						||
| 
								 | 
							
								 * @property {string} level The read concern level
							 | 
						||
| 
								 | 
							
								 * @see https://docs.mongodb.com/manual/reference/read-concern/index.html
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class ReadConcern {
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Constructs a ReadConcern from the read concern properties.
							 | 
						||
| 
								 | 
							
								   * @param {string} [level] The read concern level ({'local'|'available'|'majority'|'linearizable'|'snapshot'})
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  constructor(level) {
							 | 
						||
| 
								 | 
							
								    if (level != null) {
							 | 
						||
| 
								 | 
							
								      this.level = level;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Construct a ReadConcern given an options object.
							 | 
						||
| 
								 | 
							
								   *
							 | 
						||
| 
								 | 
							
								   * @param {object} options The options object from which to extract the write concern.
							 | 
						||
| 
								 | 
							
								   * @return {ReadConcern}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  static fromOptions(options) {
							 | 
						||
| 
								 | 
							
								    if (options == null) {
							 | 
						||
| 
								 | 
							
								      return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (options.readConcern) {
							 | 
						||
| 
								 | 
							
								      if (options.readConcern instanceof ReadConcern) {
							 | 
						||
| 
								 | 
							
								        return options.readConcern;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return new ReadConcern(options.readConcern.level);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (options.level) {
							 | 
						||
| 
								 | 
							
								      return new ReadConcern(options.level);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  static get MAJORITY() {
							 | 
						||
| 
								 | 
							
								    return 'majority';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  static get AVAILABLE() {
							 | 
						||
| 
								 | 
							
								    return 'available';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  static get LINEARIZABLE() {
							 | 
						||
| 
								 | 
							
								    return 'linearizable';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  static get SNAPSHOT() {
							 | 
						||
| 
								 | 
							
								    return 'snapshot';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = ReadConcern;
							 |