validate_collection.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.ValidateCollectionOperation = void 0;
  4. const responses_1 = require("../cmap/wire_protocol/responses");
  5. const error_1 = require("../error");
  6. const command_1 = require("./command");
  7. /** @internal */
  8. class ValidateCollectionOperation extends command_1.CommandOperation {
  9. constructor(admin, collectionName, options) {
  10. super(admin.s.db, options);
  11. this.SERVER_COMMAND_RESPONSE_TYPE = responses_1.MongoDBResponse;
  12. this.options = options;
  13. this.collectionName = collectionName;
  14. }
  15. get commandName() {
  16. return 'validate';
  17. }
  18. buildCommandDocument(_connection, _session) {
  19. // Decorate command with extra options
  20. return {
  21. validate: this.collectionName,
  22. ...Object.fromEntries(Object.entries(this.options).filter(entry => entry[0] !== 'session'))
  23. };
  24. }
  25. handleOk(response) {
  26. const result = super.handleOk(response);
  27. if (result.result != null && typeof result.result !== 'string')
  28. throw new error_1.MongoUnexpectedServerResponseError('Error with validation data');
  29. if (result.result != null && result.result.match(/exception|corrupt/) != null)
  30. throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${this.collectionName}`);
  31. if (result.valid != null && !result.valid)
  32. throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${this.collectionName}`);
  33. return response;
  34. }
  35. }
  36. exports.ValidateCollectionOperation = ValidateCollectionOperation;
  37. //# sourceMappingURL=validate_collection.js.map