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.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							2.3 KiB
						
					
					
				| "use strict";
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| exports.prepareDocs = exports.indexInformation = void 0;
 | |
| const error_1 = require("../error");
 | |
| const utils_1 = require("../utils");
 | |
| function indexInformation(db, name, _optionsOrCallback, _callback) {
 | |
|     let options = _optionsOrCallback;
 | |
|     let callback = _callback;
 | |
|     if ('function' === typeof _optionsOrCallback) {
 | |
|         callback = _optionsOrCallback;
 | |
|         options = {};
 | |
|     }
 | |
|     // If we specified full information
 | |
|     const full = options.full == null ? false : options.full;
 | |
|     let topology;
 | |
|     try {
 | |
|         topology = (0, utils_1.getTopology)(db);
 | |
|     }
 | |
|     catch (error) {
 | |
|         return callback(error);
 | |
|     }
 | |
|     // Did the user destroy the topology
 | |
|     if (topology.isDestroyed())
 | |
|         return callback(new error_1.MongoTopologyClosedError());
 | |
|     // Process all the results from the index command and collection
 | |
|     function processResults(indexes) {
 | |
|         // Contains all the information
 | |
|         const info = {};
 | |
|         // Process all the indexes
 | |
|         for (let i = 0; i < indexes.length; i++) {
 | |
|             const index = indexes[i];
 | |
|             // Let's unpack the object
 | |
|             info[index.name] = [];
 | |
|             for (const name in index.key) {
 | |
|                 info[index.name].push([name, index.key[name]]);
 | |
|             }
 | |
|         }
 | |
|         return info;
 | |
|     }
 | |
|     // Get the list of indexes of the specified collection
 | |
|     db.collection(name)
 | |
|         .listIndexes(options)
 | |
|         .toArray()
 | |
|         .then(indexes => {
 | |
|         if (!Array.isArray(indexes))
 | |
|             return callback(undefined, []);
 | |
|         if (full)
 | |
|             return callback(undefined, indexes);
 | |
|         callback(undefined, processResults(indexes));
 | |
|     }, error => callback(error));
 | |
| }
 | |
| exports.indexInformation = indexInformation;
 | |
| function prepareDocs(coll, docs, options) {
 | |
|     const forceServerObjectId = typeof options.forceServerObjectId === 'boolean'
 | |
|         ? options.forceServerObjectId
 | |
|         : coll.s.db.options?.forceServerObjectId;
 | |
|     // no need to modify the docs if server sets the ObjectId
 | |
|     if (forceServerObjectId === true) {
 | |
|         return docs;
 | |
|     }
 | |
|     return docs.map(doc => {
 | |
|         if (doc._id == null) {
 | |
|             doc._id = coll.s.pkFactory.createPk();
 | |
|         }
 | |
|         return doc;
 | |
|     });
 | |
| }
 | |
| exports.prepareDocs = prepareDocs;
 | |
| //# sourceMappingURL=common_functions.js.map
 |