diff --git a/app/cli.php b/app/cli.php index cd60a0f5bf..655ea68a4c 100644 --- a/app/cli.php +++ b/app/cli.php @@ -99,12 +99,14 @@ CLI::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, return $dbForConsole; } - $dsn = new DSN($project->getAttribute('database')); + try { + $dsn = new DSN($project->getAttribute('database')); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $project->getAttribute('database')); + } - $databaseName = empty($dsn->getHost()) ? $dsn->getPath() : $dsn->getHost(); - - if (isset($databases[$databaseName])) { - $database = $databases[$databaseName]; + if (isset($databases[$dsn->getHost()])) { + $database = $databases[$dsn->getHost()]; if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $database @@ -122,13 +124,13 @@ CLI::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, } $dbAdapter = $pools - ->get($databaseName) + ->get($dsn->getHost()) ->pop() ->getResource(); $database = new Database($dbAdapter, $cache); - $databases[$databaseName] = $database; + $databases[$dsn->getHost()] = $database; if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $database diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 0770723f96..532a6d5b28 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -220,9 +220,14 @@ App::post('/v1/projects') throw new Exception(Exception::PROJECT_ALREADY_EXISTS); } - $dsn = new DSN($dsn); - $databaseName = empty($dsn->getHost()) ? $dsn->getPath() : $dsn->getHost(); - $dbForProject = new Database($pools->get($databaseName)->pop()->getResource(), $cache); + try { + $dsn = new DSN($dsn); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $dsn); + } + + $adapter = $pools->get($dsn->getHost())->pop()->getResource(); + $dbForProject = new Database($adapter, $cache); if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $dbForProject diff --git a/app/init.php b/app/init.php index 0412052294..84c29f9613 100644 --- a/app/init.php +++ b/app/init.php @@ -1314,7 +1314,11 @@ App::setResource('dbForProject', function (Group $pools, Database $dbForConsole, ->setMetadata('project', $project->getId()) ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS); - $dsn = new DSN($project->getAttribute('database')); + try { + $dsn = new DSN($project->getAttribute('database')); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $project->getAttribute('database')); + } if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $database @@ -1356,8 +1360,11 @@ App::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, return $dbForConsole; } - $dsn = new DSN($project->getAttribute('database')); - $databaseName = empty($dsn->getHost()) ? $dsn->getPath() : $dsn->getHost(); + try { + $dsn = new DSN($project->getAttribute('database')); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $project->getAttribute('database')); + } $configure = (function (Database $database) use ($project, $dsn) { $database @@ -1378,19 +1385,19 @@ App::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, } }); - if (isset($databases[$databaseName])) { - $database = $databases[$databaseName]; + if (isset($databases[$dsn->getHost()])) { + $database = $databases[$dsn->getHost()]; $configure($database); return $database; } $dbAdapter = $pools - ->get($databaseName) + ->get($dsn->getHost()) ->pop() ->getResource(); $database = new Database($dbAdapter, $cache); - $databases[$databaseName] = $database; + $databases[$dsn->getHost()] = $database; $configure($database); return $database; diff --git a/app/realtime.php b/app/realtime.php index 489d0d9642..dd22ef8165 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -78,11 +78,14 @@ if (!function_exists("getProjectDB")) { return getConsoleDB(); } - $dsn = new DSN($project->getAttribute('database')); - $databaseName = empty($dsn->getHost()) ? $dsn->getPath() : $dsn->getHost(); + try { + $dsn = new DSN($project->getAttribute('database')); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $project->getAttribute('database')); + } $adapter = $pools - ->get($databaseName) + ->get($dsn->getHost()) ->pop() ->getResource(); diff --git a/app/worker.php b/app/worker.php index 9ab41bacb5..599d126f95 100644 --- a/app/worker.php +++ b/app/worker.php @@ -80,7 +80,11 @@ Server::setResource('dbForProject', function (Cache $cache, Registry $register, $database = new Database($adapter, $cache); - $dsn = new DSN($project->getAttribute('database')); + try { + $dsn = new DSN($project->getAttribute('database')); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $project->getAttribute('database')); + } if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $database @@ -105,11 +109,14 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForConso return $dbForConsole; } - $dsn = new DSN($project->getAttribute('database')); - $databaseName = empty($dsn->getHost()) ? $dsn->getPath() : $dsn->getHost(); + try { + $dsn = new DSN($project->getAttribute('database')); + } catch (\InvalidArgumentException) { + $dsn = new DSN('mysql://' . $project->getAttribute('database')); + } - if (isset($databases[$databaseName])) { - $database = $databases[$databaseName]; + if (isset($databases[$dsn->getHost()])) { + $database = $databases[$dsn->getHost()]; if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $database @@ -127,13 +134,13 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForConso } $dbAdapter = $pools - ->get($databaseName) + ->get($dsn->getHost()) ->pop() ->getResource(); $database = new Database($dbAdapter, $cache); - $databases[$databaseName] = $database; + $databases[$dsn->getHost()] = $database; if ($dsn->getHost() === DATABASE_SHARED_TABLES) { $database