Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
77.78% covered (warning)
77.78%
7 / 9
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
FallbackPdoResolver
75.00% covered (warning)
75.00%
6 / 8
0.00% covered (danger)
0.00%
0 / 1
3.14
0.00% covered (danger)
0.00%
0 / 1
 resolveDefaultConnection
75.00% covered (warning)
75.00%
6 / 8
0.00% covered (danger)
0.00%
0 / 1
3.14
1<?php
2
3declare(strict_types=1);
4
5/** @license For full copyright and license information, please see the LICENSE.md file. */
6
7namespace App\Core\Database;
8
9defined('AMMONLY_APP') || exit('Direct script access is forbidden.');
10
11use App\Shared\Infrastructure\Config\InstallerConfigLoader;
12use PDO;
13use Throwable;
14
15/**
16 * Fallback PDO Connection Resolver.
17 *
18 * Resolves default database PDO connection from installer configuration file.
19 *
20 * @package App\Core\Database
21 */
22final class FallbackPdoResolver
23{
24    /**
25     * Resolves default PDO connection or returns null if not available.
26     *
27     * @return PDO|null Database connection instance or null on failure.
28     */
29    public static function resolveDefaultConnection(): ?PDO
30    {
31        try {
32            $config = InstallerConfigLoader::load();
33            $dbParams = $config['db'] ?? [];
34            if ($dbParams === []) {
35                return null;
36            }
37
38            $router = new MultiDbRouter(['default' => $dbParams]);
39            return $router->getConnection('default');
40        } catch (Throwable) {
41            return null;
42        }
43    }
44}