UNPKG

@datastax/astra-db-ts

Version:
120 lines (119 loc) 6.98 kB
"use strict"; // Copyright Datastax, Inc // SPDX-License-Identifier: Apache-2.0 // noinspection ExceptionCaughtLocallyJS var _AstraDbAdmin_instances, _AstraDbAdmin_httpClient, _AstraDbAdmin_dataApiHttpClient, _AstraDbAdmin_db, _AstraDbAdmin_environment, _AstraDbAdmin_info; Object.defineProperty(exports, "__esModule", { value: true }); exports.AstraDbAdmin = void 0; const tslib_1 = require("tslib"); const db_admin_js_1 = require("../administration/db-admin.js"); const index_js_1 = require("../lib/index.js"); const utils_js_1 = require("../administration/utils.js"); const constants_js_1 = require("../lib/api/constants.js"); const devops_api_http_client_js_1 = require("../lib/api/clients/devops-api-http-client.js"); const constants_js_2 = require("../lib/constants.js"); const internal_logger_js_1 = require("../lib/logging/internal-logger.js"); const timeouts_js_1 = require("../lib/api/timeouts/timeouts.js"); class AstraDbAdmin extends db_admin_js_1.DbAdmin { constructor(db, rootOpts, adminOpts, dbToken, endpoint) { const loggingConfig = internal_logger_js_1.InternalLogger.cfg.concat([rootOpts.adminOptions.logging, adminOpts.logging]); super(rootOpts.client, loggingConfig); _AstraDbAdmin_instances.add(this); _AstraDbAdmin_httpClient.set(this, void 0); _AstraDbAdmin_dataApiHttpClient.set(this, void 0); _AstraDbAdmin_db.set(this, void 0); _AstraDbAdmin_environment.set(this, void 0); tslib_1.__classPrivateFieldSet(this, _AstraDbAdmin_environment, adminOpts?.astraEnv ?? rootOpts.adminOptions.astraEnv ?? (0, utils_js_1.extractAstraEnvironment)(endpoint), "f"); tslib_1.__classPrivateFieldSet(this, _AstraDbAdmin_httpClient, new devops_api_http_client_js_1.DevOpsAPIHttpClient({ baseUrl: constants_js_1.DEFAULT_DEVOPS_API_ENDPOINTS[tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_environment, "f")], fetchCtx: rootOpts.fetchCtx, logger: this, caller: rootOpts.caller, tokenProvider: index_js_1.TokenProvider.opts.concat([dbToken, rootOpts.adminOptions.adminToken, adminOpts.adminToken]), additionalHeaders: rootOpts.additionalHeaders, timeoutDefaults: timeouts_js_1.Timeouts.cfg.concat([rootOpts.adminOptions.timeoutDefaults, adminOpts.timeoutDefaults]), }), "f"); tslib_1.__classPrivateFieldSet(this, _AstraDbAdmin_dataApiHttpClient, db._httpClient.forDbAdmin(this, adminOpts), "f"); tslib_1.__classPrivateFieldSet(this, _AstraDbAdmin_db, db, "f"); Object.defineProperty(this, constants_js_2.$CustomInspect, { value: () => `AstraDbAdmin()`, }); } get id() { return tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id; } db() { return tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f"); } async info(options) { const tm = tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.single('databaseAdminTimeoutMs', options); return tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_instances, "m", _AstraDbAdmin_info).call(this, 'dbAdmin.info', tm); } async listKeyspaces(options) { const tm = tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.single('keyspaceAdminTimeoutMs', options); return tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_instances, "m", _AstraDbAdmin_info).call(this, 'dbAdmin.listKeyspaces', tm).then(i => i.keyspaces); } async createKeyspace(keyspace, options) { if (options?.updateDbKeyspace) { tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").useKeyspace(keyspace); } const tm = tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.multipart('keyspaceAdminTimeoutMs', options); await tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").requestLongRunning({ method: constants_js_1.HttpMethods.Post, path: `/databases/${tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}/keyspaces/${keyspace}`, methodName: 'dbAdmin.createKeyspace', }, { id: tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id, target: 'ACTIVE', legalStates: ['MAINTENANCE'], defaultPollInterval: 1000, timeoutManager: tm, options, }); } async dropKeyspace(keyspace, options) { const tm = tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.multipart('keyspaceAdminTimeoutMs', options); await tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").requestLongRunning({ method: constants_js_1.HttpMethods.Delete, path: `/databases/${tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}/keyspaces/${keyspace}`, methodName: 'dbAdmin.dropKeyspace', }, { id: tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id, target: 'ACTIVE', legalStates: ['MAINTENANCE'], defaultPollInterval: 1000, timeoutManager: tm, options, }); } async drop(options) { const tm = tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.multipart('databaseAdminTimeoutMs', options); await tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").requestLongRunning({ method: constants_js_1.HttpMethods.Post, path: `/databases/${tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}/terminate`, methodName: 'dbAdmin.drop', }, { id: tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id, target: 'TERMINATED', legalStates: ['TERMINATING'], defaultPollInterval: 10000, timeoutManager: tm, options, }); } get _httpClient() { return tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f"); } _getDataAPIHttpClient() { return tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_dataApiHttpClient, "f"); } } exports.AstraDbAdmin = AstraDbAdmin; _AstraDbAdmin_httpClient = new WeakMap(), _AstraDbAdmin_dataApiHttpClient = new WeakMap(), _AstraDbAdmin_db = new WeakMap(), _AstraDbAdmin_environment = new WeakMap(), _AstraDbAdmin_instances = new WeakSet(), _AstraDbAdmin_info = async function _AstraDbAdmin_info(methodName, tm) { const resp = await tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").request({ method: constants_js_1.HttpMethods.Get, path: `/databases/${tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}`, methodName, }, tm); return (0, utils_js_1.buildAstraDatabaseAdminInfo)(resp.data, tslib_1.__classPrivateFieldGet(this, _AstraDbAdmin_environment, "f")); };