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