123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Admin = void 0;
- const bson_1 = require("./bson");
- 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");
- /**
- * 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
- * ```ts
- * import { MongoClient } from 'mongodb';
- *
- * const client = new MongoClient('mongodb://localhost:27017');
- * const admin = client.db().admin();
- * const dbInfo = await admin.listDatabases();
- * for (const db of dbInfo.databases) {
- * console.log(db.name);
- * }
- * ```
- */
- class Admin {
- /**
- * Create a new Admin instance
- * @internal
- */
- constructor(db) {
- this.s = { db };
- }
- /**
- * Execute a command
- *
- * The driver will ensure the following fields are attached to the command sent to the server:
- * - `lsid` - sourced from an implicit session or options.session
- * - `$readPreference` - defaults to primary or can be configured by options.readPreference
- * - `$db` - sourced from the name of this database
- *
- * If the client has a serverApi setting:
- * - `apiVersion`
- * - `apiStrict`
- * - `apiDeprecationErrors`
- *
- * When in a transaction:
- * - `readConcern` - sourced from readConcern set on the TransactionOptions
- * - `writeConcern` - sourced from writeConcern set on the TransactionOptions
- *
- * Attaching any of the above fields to the command will have no effect as the driver will overwrite the value.
- *
- * @param command - The command to execute
- * @param options - Optional settings for the command
- */
- async command(command, options) {
- return (0, execute_operation_1.executeOperation)(this.s.db.client, new run_command_1.RunAdminCommandOperation(command, {
- ...(0, bson_1.resolveBSONOptions)(options),
- session: options?.session,
- readPreference: options?.readPreference
- }));
- }
- /**
- * Retrieve the server build information
- *
- * @param options - Optional settings for the command
- */
- async buildInfo(options) {
- return this.command({ buildinfo: 1 }, options);
- }
- /**
- * Retrieve the server build information
- *
- * @param options - Optional settings for the command
- */
- async serverInfo(options) {
- return this.command({ buildinfo: 1 }, options);
- }
- /**
- * Retrieve this db's server status.
- *
- * @param options - Optional settings for the command
- */
- async serverStatus(options) {
- return this.command({ serverStatus: 1 }, options);
- }
- /**
- * Ping the MongoDB server and retrieve results
- *
- * @param options - Optional settings for the command
- */
- async ping(options) {
- return this.command({ ping: 1 }, options);
- }
- /**
- * Remove a user from a database
- *
- * @param username - The username to remove
- * @param options - Optional settings for the command
- */
- async removeUser(username, options) {
- return (0, execute_operation_1.executeOperation)(this.s.db.client, new remove_user_1.RemoveUserOperation(this.s.db, username, { dbName: 'admin', ...options }));
- }
- /**
- * Validate an existing collection
- *
- * @param collectionName - The name of the collection to validate.
- * @param options - Optional settings for the command
- */
- async validateCollection(collectionName, options = {}) {
- return (0, execute_operation_1.executeOperation)(this.s.db.client, new validate_collection_1.ValidateCollectionOperation(this, collectionName, options));
- }
- /**
- * List the available databases
- *
- * @param options - Optional settings for the command
- */
- async listDatabases(options) {
- return (0, execute_operation_1.executeOperation)(this.s.db.client, new list_databases_1.ListDatabasesOperation(this.s.db, options));
- }
- /**
- * Get ReplicaSet status
- *
- * @param options - Optional settings for the command
- */
- async replSetGetStatus(options) {
- return this.command({ replSetGetStatus: 1 }, options);
- }
- }
- exports.Admin = Admin;
- //# sourceMappingURL=admin.js.map
|