diff --git a/app/cli.php b/app/cli.php index 0160738f68..9c77278c7e 100644 --- a/app/cli.php +++ b/app/cli.php @@ -56,19 +56,29 @@ CLI::setResource('dbForConsole', function ($pools, $cache) { }, ['pools', 'cache']); CLI::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, $cache) { - $getProjectDB = function (Document $project) use ($pools, $dbForConsole, $cache) { + $databases = []; + + $getProjectDB = function (Document $project) use ($pools, $dbForConsole, $cache, &$databases) { if ($project->isEmpty() || $project->getId() === 'console') { return $dbForConsole; } + $databaseName = $project->getAttribute('database'); + + if(isset($databases[$databaseName])) { + return $databases[$databaseName]; + } + $dbAdapter = $pools - ->get($project->getAttribute('database')) + ->get($databaseName) ->pop() ->getResource(); $database = new Database($dbAdapter, $cache); $database->setNamespace('_' . $project->getInternalId()); + $databases[$databaseName] = $database; + return $database; };