UNPKG

@datastax/astra-db-ts

Version:
116 lines (115 loc) 6.48 kB
// Copyright Datastax, Inc // SPDX-License-Identifier: Apache-2.0 // noinspection ExceptionCaughtLocallyJS var _AstraDbAdmin_instances, _AstraDbAdmin_httpClient, _AstraDbAdmin_dataApiHttpClient, _AstraDbAdmin_db, _AstraDbAdmin_environment, _AstraDbAdmin_info; import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib"; import { DbAdmin } from '../administration/db-admin.js'; import { TokenProvider } from '../lib/index.js'; import { buildAstraDatabaseAdminInfo, extractAstraEnvironment } from '../administration/utils.js'; import { DEFAULT_DEVOPS_API_ENDPOINTS, HttpMethods } from '../lib/api/constants.js'; import { DevOpsAPIHttpClient } from '../lib/api/clients/devops-api-http-client.js'; import { $CustomInspect } from '../lib/constants.js'; import { InternalLogger } from '../lib/logging/internal-logger.js'; import { Timeouts } from '../lib/api/timeouts/timeouts.js'; export class AstraDbAdmin extends DbAdmin { constructor(db, rootOpts, adminOpts, dbToken, endpoint) { const loggingConfig = 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); __classPrivateFieldSet(this, _AstraDbAdmin_environment, adminOpts?.astraEnv ?? rootOpts.adminOptions.astraEnv ?? extractAstraEnvironment(endpoint), "f"); __classPrivateFieldSet(this, _AstraDbAdmin_httpClient, new DevOpsAPIHttpClient({ baseUrl: DEFAULT_DEVOPS_API_ENDPOINTS[__classPrivateFieldGet(this, _AstraDbAdmin_environment, "f")], fetchCtx: rootOpts.fetchCtx, logger: this, caller: rootOpts.caller, tokenProvider: TokenProvider.opts.concat([dbToken, rootOpts.adminOptions.adminToken, adminOpts.adminToken]), additionalHeaders: rootOpts.additionalHeaders, timeoutDefaults: Timeouts.cfg.concat([rootOpts.adminOptions.timeoutDefaults, adminOpts.timeoutDefaults]), }), "f"); __classPrivateFieldSet(this, _AstraDbAdmin_dataApiHttpClient, db._httpClient.forDbAdmin(this, adminOpts), "f"); __classPrivateFieldSet(this, _AstraDbAdmin_db, db, "f"); Object.defineProperty(this, $CustomInspect, { value: () => `AstraDbAdmin()`, }); } get id() { return __classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id; } db() { return __classPrivateFieldGet(this, _AstraDbAdmin_db, "f"); } async info(options) { const tm = __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.single('databaseAdminTimeoutMs', options); return __classPrivateFieldGet(this, _AstraDbAdmin_instances, "m", _AstraDbAdmin_info).call(this, 'dbAdmin.info', tm); } async listKeyspaces(options) { const tm = __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.single('keyspaceAdminTimeoutMs', options); return __classPrivateFieldGet(this, _AstraDbAdmin_instances, "m", _AstraDbAdmin_info).call(this, 'dbAdmin.listKeyspaces', tm).then(i => i.keyspaces); } async createKeyspace(keyspace, options) { if (options?.updateDbKeyspace) { __classPrivateFieldGet(this, _AstraDbAdmin_db, "f").useKeyspace(keyspace); } const tm = __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.multipart('keyspaceAdminTimeoutMs', options); await __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").requestLongRunning({ method: HttpMethods.Post, path: `/databases/${__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}/keyspaces/${keyspace}`, methodName: 'dbAdmin.createKeyspace', }, { id: __classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id, target: 'ACTIVE', legalStates: ['MAINTENANCE'], defaultPollInterval: 1000, timeoutManager: tm, options, }); } async dropKeyspace(keyspace, options) { const tm = __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.multipart('keyspaceAdminTimeoutMs', options); await __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").requestLongRunning({ method: HttpMethods.Delete, path: `/databases/${__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}/keyspaces/${keyspace}`, methodName: 'dbAdmin.dropKeyspace', }, { id: __classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id, target: 'ACTIVE', legalStates: ['MAINTENANCE'], defaultPollInterval: 1000, timeoutManager: tm, options, }); } async drop(options) { const tm = __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").tm.multipart('databaseAdminTimeoutMs', options); await __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").requestLongRunning({ method: HttpMethods.Post, path: `/databases/${__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}/terminate`, methodName: 'dbAdmin.drop', }, { id: __classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id, target: 'TERMINATED', legalStates: ['TERMINATING'], defaultPollInterval: 10000, timeoutManager: tm, options, }); } get _httpClient() { return __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f"); } _getDataAPIHttpClient() { return __classPrivateFieldGet(this, _AstraDbAdmin_dataApiHttpClient, "f"); } } _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 __classPrivateFieldGet(this, _AstraDbAdmin_httpClient, "f").request({ method: HttpMethods.Get, path: `/databases/${__classPrivateFieldGet(this, _AstraDbAdmin_db, "f").id}`, methodName, }, tm); return buildAstraDatabaseAdminInfo(resp.data, __classPrivateFieldGet(this, _AstraDbAdmin_environment, "f")); };