37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.ValidateCollectionOperation = void 0;
|
|
const responses_1 = require("../cmap/wire_protocol/responses");
|
|
const error_1 = require("../error");
|
|
const command_1 = require("./command");
|
|
/** @internal */
|
|
class ValidateCollectionOperation extends command_1.CommandOperation {
|
|
constructor(admin, collectionName, options) {
|
|
super(admin.s.db, options);
|
|
this.SERVER_COMMAND_RESPONSE_TYPE = responses_1.MongoDBResponse;
|
|
this.options = options;
|
|
this.collectionName = collectionName;
|
|
}
|
|
get commandName() {
|
|
return 'validate';
|
|
}
|
|
buildCommandDocument(_connection, _session) {
|
|
// Decorate command with extra options
|
|
return {
|
|
validate: this.collectionName,
|
|
...Object.fromEntries(Object.entries(this.options).filter(entry => entry[0] !== 'session'))
|
|
};
|
|
}
|
|
handleOk(response) {
|
|
const result = super.handleOk(response);
|
|
if (result.result != null && typeof result.result !== 'string')
|
|
throw new error_1.MongoUnexpectedServerResponseError('Error with validation data');
|
|
if (result.result != null && result.result.match(/exception|corrupt/) != null)
|
|
throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${this.collectionName}`);
|
|
if (result.valid != null && !result.valid)
|
|
throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${this.collectionName}`);
|
|
return response;
|
|
}
|
|
}
|
|
exports.ValidateCollectionOperation = ValidateCollectionOperation;
|
|
//# sourceMappingURL=validate_collection.js.map
|