UNPKG

couchbase

Version:

The official Couchbase Node.js Client Library.

405 lines (404 loc) 15.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScopeSearchIndexManager = void 0; const utilities_1 = require("./utilities"); const bindingutilities_1 = require("./bindingutilities"); const searchindexmanager_1 = require("./searchindexmanager"); /** * SearchIndexManager provides an interface for managing the * search indexes on the cluster. * * @category Management */ class ScopeSearchIndexManager { /** * @internal */ constructor(cluster, bucketName, scopeName) { this._cluster = cluster; this._bucketName = bucketName; this._scopeName = scopeName; } /** * Returns an index by it's name. * * @param indexName The index to retrieve. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async getIndex(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexGet({ index_name: indexName, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr, resp) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } const index = searchindexmanager_1.SearchIndex._fromCppData(resp.index); wrapCallback(null, index); }); }, callback); } /** * Returns a list of all existing indexes. * * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async getAllIndexes(options, callback) { if (options instanceof Function) { callback = arguments[0]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexGetAll({ timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr, resp) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } const indexes = resp.indexes.map((indexData) => searchindexmanager_1.SearchIndex._fromCppData(indexData)); wrapCallback(null, indexes); }); }, callback); } /** * Creates or updates an existing index. * * @param indexDefinition The index to update. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async upsertIndex(indexDefinition, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexUpsert({ index: searchindexmanager_1.SearchIndex._toCppData(indexDefinition), timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Drops an index. * * @param indexName The name of the index to drop. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async dropIndex(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexDrop({ index_name: indexName, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Returns the number of documents that have been indexed. * * @param indexName The name of the index to return the count for. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async getIndexedDocumentsCount(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexGetDocumentsCount({ index_name: indexName, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr, resp) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(null, resp.count); }); }, callback); } /** * Pauses the ingestion of documents into an index. * * @param indexName The name of the index to pause. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async pauseIngest(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexControlIngest({ index_name: indexName, pause: true, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Resumes the ingestion of documents into an index. * * @param indexName The name of the index to resume. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async resumeIngest(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexControlIngest({ index_name: indexName, pause: false, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Enables querying of an index. * * @param indexName The name of the index to enable querying for. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async allowQuerying(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexControlQuery({ index_name: indexName, allow: true, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Disables querying of an index. * * @param indexName The name of the index to disable querying for. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async disallowQuerying(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexControlQuery({ index_name: indexName, allow: false, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Freezes the indexing plan for execution of queries. * * @param indexName The name of the index to freeze the plan of. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async freezePlan(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexControlPlanFreeze({ index_name: indexName, freeze: true, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Unfreezes the indexing plan for execution of queries. * * @param indexName The name of the index to freeze the plan of. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async unfreezePlan(indexName, options, callback) { if (options instanceof Function) { callback = arguments[1]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexControlPlanFreeze({ index_name: indexName, freeze: false, timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } wrapCallback(err); }); }, callback); } /** * Performs analysis of a specific document by an index. * * @param indexName The name of the index to use for the analysis. * @param document The document to analyze. * @param options Optional parameters for this operation. * @param callback A node-style callback to be invoked after execution. */ async analyzeDocument(indexName, document, options, callback) { if (options instanceof Function) { callback = arguments[2]; options = undefined; } if (!options) { options = {}; } const timeout = options.timeout || this._cluster.managementTimeout; return utilities_1.PromiseHelper.wrap((wrapCallback) => { this._cluster.conn.managementSearchIndexAnalyzeDocument({ index_name: indexName, encoded_document: JSON.stringify(document), timeout: timeout, bucket_name: this._bucketName, scope_name: this._scopeName, }, (cppErr, resp) => { const err = (0, bindingutilities_1.errorFromCpp)(cppErr); if (err) { return wrapCallback(err, null); } const result = JSON.parse(resp.analysis); wrapCallback(result, null); }); }, callback); } } exports.ScopeSearchIndexManager = ScopeSearchIndexManager;