"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RenameOperation = void 0; const collection_1 = require("../collection"); const error_1 = require("../error"); const utils_1 = require("../utils"); const operation_1 = require("./operation"); const run_command_1 = require("./run_command"); /** @internal */ class RenameOperation extends run_command_1.RunAdminCommandOperation { constructor(collection, newName, options) { // Check the collection name (0, utils_1.checkCollectionName)(newName); // Build the command const renameCollection = collection.namespace; const toCollection = collection.s.namespace.withCollection(newName).toString(); const dropTarget = typeof options.dropTarget === 'boolean' ? options.dropTarget : false; const cmd = { renameCollection: renameCollection, to: toCollection, dropTarget: dropTarget }; super(collection, cmd, options); this.options = options; this.collection = collection; this.newName = newName; } execute(server, session, callback) { const coll = this.collection; super.execute(server, session, (err, doc) => { if (err) return callback(err); // We have an error if (doc.errmsg) { return callback(new error_1.MongoServerError(doc)); } let newColl; try { newColl = new collection_1.Collection(coll.s.db, this.newName, coll.s.options); } catch (err) { return callback(err); } return callback(undefined, newColl); }); } } exports.RenameOperation = RenameOperation; (0, operation_1.defineAspects)(RenameOperation, [operation_1.Aspect.WRITE_OPERATION]); //# sourceMappingURL=rename.js.map