'use strict'; const CommandOperationV2 = require('./command_v2'); const Aspect = require('./operation').Aspect; const defineAspects = require('./operation').defineAspects; const MongoDBNamespace = require('../utils').MongoDBNamespace; class ListDatabasesOperation extends CommandOperationV2 { constructor(db, options) { super(db, options); this.ns = new MongoDBNamespace('admin', '$cmd'); } execute(server, callback) { const cmd = { listDatabases: 1 }; if (this.options.nameOnly) { cmd.nameOnly = Number(cmd.nameOnly); } if (this.options.filter) { cmd.filter = this.options.filter; } if (typeof this.options.authorizedDatabases === 'boolean') { cmd.authorizedDatabases = this.options.authorizedDatabases; } super.executeCommand(server, cmd, callback); } } defineAspects(ListDatabasesOperation, [ Aspect.READ_OPERATION, Aspect.RETRYABLE, Aspect.EXECUTE_WITH_SELECTION ]); module.exports = ListDatabasesOperation;