@datastax/astra-db-ts
Version:
Data API TypeScript client
120 lines (119 loc) • 6.98 kB
JavaScript
"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"));
};