"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((err, indexes) => {
if (err)
return callback(err);
if (!Array.isArray(indexes))
return callback(undefined, []);
if (full)
return callback(undefined, indexes);
callback(undefined, processResults(indexes));
});
}
exports.indexInformation = indexInformation;
function prepareDocs(coll, docs, options) {
var _a;
const forceServerObjectId = typeof options.forceServerObjectId === 'boolean'
? options.forceServerObjectId
: (_a = coll.s.db.options) === null || _a === void 0 ? void 0 : _a.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