1
0
Fork 0
mirror of synced 2024-10-01 01:37:56 +13:00

Add scheme to DSN on fail

This commit is contained in:
Jake Barnby 2024-05-06 18:13:41 +12:00
parent ec2878b505
commit 52c52fa519
No known key found for this signature in database
GPG key ID: C437A8CC85B96E9C
5 changed files with 51 additions and 27 deletions

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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();

View file

@ -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