Commit
This commit is contained in:
commit
d1c8cae2c1
1417 changed files with 326736 additions and 0 deletions
83
node_modules/mongodb/lib/operations/command.js
generated
vendored
Normal file
83
node_modules/mongodb/lib/operations/command.js
generated
vendored
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.CommandOperation = void 0;
|
||||
const constants_1 = require("../cmap/wire_protocol/constants");
|
||||
const error_1 = require("../error");
|
||||
const explain_1 = require("../explain");
|
||||
const read_concern_1 = require("../read_concern");
|
||||
const utils_1 = require("../utils");
|
||||
const write_concern_1 = require("../write_concern");
|
||||
const operation_1 = require("./operation");
|
||||
/** @internal */
|
||||
class CommandOperation extends operation_1.AbstractOperation {
|
||||
constructor(parent, options) {
|
||||
super(options);
|
||||
this.options = options ?? {};
|
||||
// NOTE: this was explicitly added for the add/remove user operations, it's likely
|
||||
// something we'd want to reconsider. Perhaps those commands can use `Admin`
|
||||
// as a parent?
|
||||
const dbNameOverride = options?.dbName || options?.authdb;
|
||||
if (dbNameOverride) {
|
||||
this.ns = new utils_1.MongoDBNamespace(dbNameOverride, '$cmd');
|
||||
}
|
||||
else {
|
||||
this.ns = parent
|
||||
? parent.s.namespace.withCollection('$cmd')
|
||||
: new utils_1.MongoDBNamespace('admin', '$cmd');
|
||||
}
|
||||
this.readConcern = read_concern_1.ReadConcern.fromOptions(options);
|
||||
this.writeConcern = write_concern_1.WriteConcern.fromOptions(options);
|
||||
if (this.hasAspect(operation_1.Aspect.EXPLAINABLE)) {
|
||||
this.explain = explain_1.Explain.fromOptions(options);
|
||||
if (this.explain)
|
||||
(0, explain_1.validateExplainTimeoutOptions)(this.options, this.explain);
|
||||
}
|
||||
else if (options?.explain != null) {
|
||||
throw new error_1.MongoInvalidArgumentError(`Option "explain" is not supported on this command`);
|
||||
}
|
||||
}
|
||||
get canRetryWrite() {
|
||||
if (this.hasAspect(operation_1.Aspect.EXPLAINABLE)) {
|
||||
return this.explain == null;
|
||||
}
|
||||
return super.canRetryWrite;
|
||||
}
|
||||
buildOptions(timeoutContext) {
|
||||
return {
|
||||
...this.options,
|
||||
...this.bsonOptions,
|
||||
timeoutContext,
|
||||
readPreference: this.readPreference,
|
||||
session: this.session
|
||||
};
|
||||
}
|
||||
buildCommand(connection, session) {
|
||||
const command = this.buildCommandDocument(connection, session);
|
||||
const inTransaction = this.session && this.session.inTransaction();
|
||||
if (this.readConcern && (0, utils_1.commandSupportsReadConcern)(command) && !inTransaction) {
|
||||
Object.assign(command, { readConcern: this.readConcern });
|
||||
}
|
||||
if (this.writeConcern && this.hasAspect(operation_1.Aspect.WRITE_OPERATION) && !inTransaction) {
|
||||
write_concern_1.WriteConcern.apply(command, this.writeConcern);
|
||||
}
|
||||
if (this.options.collation &&
|
||||
typeof this.options.collation === 'object' &&
|
||||
!this.hasAspect(operation_1.Aspect.SKIP_COLLATION)) {
|
||||
Object.assign(command, { collation: this.options.collation });
|
||||
}
|
||||
if (typeof this.options.maxTimeMS === 'number') {
|
||||
command.maxTimeMS = this.options.maxTimeMS;
|
||||
}
|
||||
if (this.options.rawData != null &&
|
||||
this.hasAspect(operation_1.Aspect.SUPPORTS_RAW_DATA) &&
|
||||
(0, utils_1.maxWireVersion)(connection) >= constants_1.MIN_SUPPORTED_RAW_DATA_WIRE_VERSION) {
|
||||
command.rawData = this.options.rawData;
|
||||
}
|
||||
if (this.hasAspect(operation_1.Aspect.EXPLAINABLE) && this.explain) {
|
||||
return (0, explain_1.decorateWithExplain)(command, this.explain);
|
||||
}
|
||||
return command;
|
||||
}
|
||||
}
|
||||
exports.CommandOperation = CommandOperation;
|
||||
//# sourceMappingURL=command.js.map
|
||||
Loading…
Add table
Add a link
Reference in a new issue