Add scheme to DSN on fail
This commit is contained in:
parent
ec2878b505
commit
52c52fa519
5 changed files with 51 additions and 27 deletions
16
app/cli.php
16
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
|
||||
|
|
|
@ -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
|
||||
|
|
21
app/init.php
21
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;
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue