UNPKG

couchbase-index-manager

Version:
79 lines 4.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UpdateIndexMutation = void 0; const tslib_1 = require("tslib"); const chalk_1 = tslib_1.__importDefault(require("chalk")); const lodash_1 = require("lodash"); const create_index_mutation_1 = require("./create-index-mutation"); const drop_index_mutation_1 = require("./drop-index-mutation"); const index_mutation_1 = require("./index-mutation"); /** * Represents an index mutation which updates an existing index */ class UpdateIndexMutation extends index_mutation_1.IndexMutation { constructor(definition, name, withClause, existingIndex) { super(definition, name); this.existingIndex = existingIndex; this.withClause = withClause || {}; } print(logger) { var _a; logger.info(chalk_1.default.cyanBright(`Update: ${this.displayName}`)); if (!(0, lodash_1.isEqual)(this.existingIndex.index_key, this.definition.index_key)) { logger.info(chalk_1.default.cyanBright(` Keys: ${this.formatKeys(this.existingIndex)}`)); logger.info(chalk_1.default.cyanBright(` -> ${this.formatKeys(this.definition)}`)); } if (this.definition.partition || this.existingIndex.partition) { if (!(0, lodash_1.isEqual)(this.existingIndex.partition || '', this.definition.getPartitionString())) { logger.info(chalk_1.default.cyanBright(` Part: ${this.existingIndex.partition || 'none'}`)); logger.info(chalk_1.default.cyanBright(` -> ${this.definition.getPartitionString() || 'none'}`)); } if (this.definition.partition && this.definition.partition.num_partition && this.existingIndex.num_partition !== this.definition.partition.num_partition) { logger.info(chalk_1.default.cyanBright(`# Part: ${this.existingIndex.num_partition}`)); logger.info(chalk_1.default.cyanBright(` -> ${this.definition.partition.num_partition}`)); } } if (!(0, lodash_1.isEqual)(this.existingIndex.condition || '', this.definition.condition || '')) { logger.info(chalk_1.default.cyanBright(` Cond: ${this.existingIndex.condition || 'none'}`)); logger.info(chalk_1.default.cyanBright(` -> ${this.definition.condition || 'none'}`)); } const hasReplica = Math.max((_a = this.definition.num_replica) !== null && _a !== void 0 ? _a : 0, this.existingIndex.num_replica) > 0; if (!this.definition.manual_replica && hasReplica) { logger.info(chalk_1.default.cyanBright(` Repl: ${this.definition.num_replica}`)); } if (this.withClause.nodes && this.existingIndex.nodes && !(0, lodash_1.isEqual)(this.withClause.nodes, this.existingIndex.nodes)) { logger.info(chalk_1.default.cyanBright(` Nodes: ${this.existingIndex.nodes.join()}`)); logger.info(chalk_1.default.cyanBright(` ->: ${this.withClause.nodes.join()}`)); } if (!(0, lodash_1.isEqual)(!!this.withClause.retain_deleted_xattr, this.existingIndex.retain_deleted_xattr)) { logger.info(chalk_1.default.cyanBright(` XATTR: ${this.existingIndex.retain_deleted_xattr}`)); logger.info(chalk_1.default.cyanBright(` ->: ${!!this.withClause.retain_deleted_xattr}`)); } } /** @inheritDoc */ async execute(manager, logger) { const dropMutation = new drop_index_mutation_1.DropIndexMutation(this.definition, this.name); await dropMutation.execute(manager, logger); const createMutation = new create_index_mutation_1.CreateIndexMutation(this.definition, this.name, this.withClause); await createMutation.execute(manager, logger); } /** * Formats a list of keys for human readable output */ formatKeys(index) { return index.index_key.join(','); } isSafe() { var _a; // Safe if there are multiple replicas // As each update will run in its own phase return this.definition.manual_replica && ((_a = this.definition.num_replica) !== null && _a !== void 0 ? _a : 0) > 0; } } exports.UpdateIndexMutation = UpdateIndexMutation; //# sourceMappingURL=update-index-mutation.js.map