Skip to content

Commit 58d2595

Browse files
committed
Align factories
Signed-off-by: Joey Smith <jsmith@webinertia.net>
1 parent 958cd15 commit 58d2595

3 files changed

Lines changed: 24 additions & 30 deletions

File tree

src/Container/MetadataInterfaceFactory.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@
55
namespace PhpDb\Sqlite\Container;
66

77
use PhpDb\Adapter\AdapterInterface;
8-
use PhpDb\Adapter\SchemaAwareInterface;
98
use PhpDb\Metadata\MetadataInterface;
109
use PhpDb\Sqlite\Metadata;
1110
use Psr\Container\ContainerInterface;
1211

1312
final class MetadataInterfaceFactory
1413
{
15-
public function __invoke(ContainerInterface $container): MetadataInterface&Metadata\Source
16-
{
17-
/** @var AdapterInterface&SchemaAwareInterface $adapter */
18-
$adapter = $container->get(AdapterInterface::class);
14+
public const ADAPTER_SERVICE_NAME = 'adapter_service_name';
15+
public function __invoke(
16+
ContainerInterface $container,
17+
string $requestedName,
18+
?array $options = null
19+
): MetadataInterface&Metadata\Source {
20+
$adapterServiceName = $options[self::ADAPTER_SERVICE_NAME] ?? AdapterInterface::class;
1921

20-
return new Metadata\Source(
21-
$adapter
22-
);
22+
return new Metadata\Source($container->get($adapterServiceName));
2323
}
2424
}

src/Container/PdoConnectionFactory.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,26 @@
44

55
namespace PhpDb\Sqlite\Container;
66

7-
use PhpDb\Adapter\AdapterInterface;
8-
use PhpDb\Adapter\Driver\ConnectionInterface;
7+
use PhpDb\Adapter\Driver\PdoConnectionInterface;
8+
use PhpDb\Adapter\Exception\InvalidConnectionParametersException;
99
use PhpDb\Sqlite\Pdo\Connection;
1010
use Psr\Container\ContainerInterface;
1111

1212
final class PdoConnectionFactory
1313
{
14-
public function __invoke(ContainerInterface $container): ConnectionInterface&Connection
15-
{
16-
/** @var array $config */
17-
$config = $container->get('config');
14+
public function __invoke(
15+
ContainerInterface $container,
16+
string $requestedName,
17+
?array $options = null
18+
): PdoConnectionInterface&Connection {
19+
$conn = $options['connection'] ?? [];
20+
if (! is_array($conn) || $conn === []) {
21+
throw new InvalidConnectionParametersException(
22+
'Connection configuration must be an array of parameters passed via $options["connection"]',
23+
$conn
24+
);
25+
}
1826

19-
/** @var array $dbConfig */
20-
$dbConfig = $config[AdapterInterface::class] ?? [];
21-
22-
/** @var array $connectionConfig */
23-
$connectionConfig = $dbConfig['connection'] ?? [];
24-
25-
return new Connection($connectionConfig);
27+
return new Connection($conn);
2628
}
2729
}

src/Container/PdoDriverInterfaceFactory.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,10 @@ public function __invoke(
1919
string $requestedName,
2020
?array $options = null
2121
): PdoDriverInterface&Pdo\Driver {
22-
// if (! $container->has('config')) {
23-
// throw ContainerException::forService(
24-
// Pdo\Driver::class,
25-
// self::class,
26-
// 'Container is missing config service'
27-
// );
28-
// }
29-
3022
/** @var Pdo\Connection $connectionInstance */
3123
$connectionInstance = $container->build(
3224
Pdo\Connection::class,
33-
['connection' => $options['connection'] ?? []]
25+
$options
3426
);
3527

3628
/** @var ResultInterface&Result $resultInstance */

0 commit comments

Comments
 (0)