124 lines
5.2 KiB
JavaScript
124 lines
5.2 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.Admin = void 0;
|
||
|
const add_user_1 = require("./operations/add_user");
|
||
|
const execute_operation_1 = require("./operations/execute_operation");
|
||
|
const list_databases_1 = require("./operations/list_databases");
|
||
|
const remove_user_1 = require("./operations/remove_user");
|
||
|
const run_command_1 = require("./operations/run_command");
|
||
|
const validate_collection_1 = require("./operations/validate_collection");
|
||
|
const utils_1 = require("./utils");
|
||
|
/**
|
||
|
* The **Admin** class is an internal class that allows convenient access to
|
||
|
* the admin functionality and commands for MongoDB.
|
||
|
*
|
||
|
* **ADMIN Cannot directly be instantiated**
|
||
|
* @public
|
||
|
*
|
||
|
* @example
|
||
|
* ```js
|
||
|
* const MongoClient = require('mongodb').MongoClient;
|
||
|
* const test = require('assert');
|
||
|
* // Connection url
|
||
|
* const url = 'mongodb://localhost:27017';
|
||
|
* // Database Name
|
||
|
* const dbName = 'test';
|
||
|
*
|
||
|
* // Connect using MongoClient
|
||
|
* MongoClient.connect(url, function(err, client) {
|
||
|
* // Use the admin database for the operation
|
||
|
* const adminDb = client.db(dbName).admin();
|
||
|
*
|
||
|
* // List all the available databases
|
||
|
* adminDb.listDatabases(function(err, dbs) {
|
||
|
* expect(err).to.not.exist;
|
||
|
* test.ok(dbs.databases.length > 0);
|
||
|
* client.close();
|
||
|
* });
|
||
|
* });
|
||
|
* ```
|
||
|
*/
|
||
|
class Admin {
|
||
|
/**
|
||
|
* Create a new Admin instance
|
||
|
* @internal
|
||
|
*/
|
||
|
constructor(db) {
|
||
|
this.s = { db };
|
||
|
}
|
||
|
command(command, options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = Object.assign({ dbName: 'admin' }, options);
|
||
|
return (0, execute_operation_1.executeOperation)((0, utils_1.getTopology)(this.s.db), new run_command_1.RunCommandOperation(this.s.db, command, options), callback);
|
||
|
}
|
||
|
buildInfo(options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return this.command({ buildinfo: 1 }, options, callback);
|
||
|
}
|
||
|
serverInfo(options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return this.command({ buildinfo: 1 }, options, callback);
|
||
|
}
|
||
|
serverStatus(options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return this.command({ serverStatus: 1 }, options, callback);
|
||
|
}
|
||
|
ping(options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return this.command({ ping: 1 }, options, callback);
|
||
|
}
|
||
|
addUser(username, password, options, callback) {
|
||
|
if (typeof password === 'function') {
|
||
|
(callback = password), (password = undefined), (options = {});
|
||
|
}
|
||
|
else if (typeof password !== 'string') {
|
||
|
if (typeof options === 'function') {
|
||
|
(callback = options), (options = password), (password = undefined);
|
||
|
}
|
||
|
else {
|
||
|
(options = password), (callback = undefined), (password = undefined);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
}
|
||
|
options = Object.assign({ dbName: 'admin' }, options);
|
||
|
return (0, execute_operation_1.executeOperation)((0, utils_1.getTopology)(this.s.db), new add_user_1.AddUserOperation(this.s.db, username, password, options), callback);
|
||
|
}
|
||
|
removeUser(username, options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = Object.assign({ dbName: 'admin' }, options);
|
||
|
return (0, execute_operation_1.executeOperation)((0, utils_1.getTopology)(this.s.db), new remove_user_1.RemoveUserOperation(this.s.db, username, options), callback);
|
||
|
}
|
||
|
validateCollection(collectionName, options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return (0, execute_operation_1.executeOperation)((0, utils_1.getTopology)(this.s.db), new validate_collection_1.ValidateCollectionOperation(this, collectionName, options), callback);
|
||
|
}
|
||
|
listDatabases(options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return (0, execute_operation_1.executeOperation)((0, utils_1.getTopology)(this.s.db), new list_databases_1.ListDatabasesOperation(this.s.db, options), callback);
|
||
|
}
|
||
|
replSetGetStatus(options, callback) {
|
||
|
if (typeof options === 'function')
|
||
|
(callback = options), (options = {});
|
||
|
options = options !== null && options !== void 0 ? options : {};
|
||
|
return this.command({ replSetGetStatus: 1 }, options, callback);
|
||
|
}
|
||
|
}
|
||
|
exports.Admin = Admin;
|
||
|
//# sourceMappingURL=admin.js.map
|