|
5 | 5 | namespace Tempest\Database; |
6 | 6 |
|
7 | 7 | use Tempest\Container\Container; |
8 | | -use Tempest\Container\Initializer; |
| 8 | +use Tempest\Container\DynamicInitializer; |
9 | 9 | use Tempest\Container\Singleton; |
10 | | -use Tempest\Database\Connection\Connection; |
11 | | -use Tempest\Database\Transactions\TransactionManager; |
| 10 | +use Tempest\Database\Config\DatabaseConfig; |
| 11 | +use Tempest\Database\Connection\PDOConnection; |
| 12 | +use Tempest\Database\Transactions\GenericTransactionManager; |
| 13 | +use Tempest\Reflection\ClassReflector; |
12 | 14 |
|
13 | | -final readonly class DatabaseInitializer implements Initializer |
| 15 | +final readonly class DatabaseInitializer implements DynamicInitializer |
14 | 16 | { |
| 17 | + public function canInitialize(ClassReflector $class, ?string $tag): bool |
| 18 | + { |
| 19 | + return $class->getType()->matches(Database::class); |
| 20 | + } |
| 21 | + |
15 | 22 | #[Singleton] |
16 | | - public function initialize(Container $container): Database |
| 23 | + public function initialize(ClassReflector $class, ?string $tag, Container $container): Database |
17 | 24 | { |
| 25 | + $config = $container->get(DatabaseConfig::class, $tag); |
| 26 | + |
| 27 | + $connection = new PDOConnection($config); |
| 28 | + |
18 | 29 | return new GenericDatabase( |
19 | | - $container->get(Connection::class), |
20 | | - $container->get(TransactionManager::class), |
| 30 | + $connection, |
| 31 | + new GenericTransactionManager($connection), |
21 | 32 | ); |
22 | 33 | } |
23 | 34 | } |
0 commit comments