Skip to content

Commit 1bdad59

Browse files
committed
Simplify DSN stuff again
1 parent fff2dc9 commit 1bdad59

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ services:
2929
- STOMP_DSN=stomp://guest:guest@rabbitmq:61613/mqdev
3030
- RABITMQ_STOMP_DSN=stomp+rabbitmq://guest:guest@rabbitmq:61613/mqdev
3131
- RABBITMQ_MANAGMENT_DSN=http://guest:guest@rabbitmq:15672/mqdev
32-
- DOCTRINE_DSN=mysql+pdo://root:rootpass@mysql/mqdev
32+
- DOCTRINE_DSN=mysql://root:rootpass@mysql/mqdev
3333
- DOCTRINE_POSTGRES_DSN=postgres://postgres:pass@postgres/template1
3434
- MYSQL_DSN=mysql://root:rootpass@mysql/mqdev
3535
- POSTGRES_DSN=postgres://postgres:pass@postgres/postgres

pkg/dbal/DbalConnectionFactory.php

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,18 +106,21 @@ private function parseDsn(string $dsn, ?array $config = null): array
106106
{
107107
$parsedDsn = Dsn::parseFirst($dsn);
108108

109+
// enqueue scheme => dbal scheme
110+
// out of the box dbal 4 schemes: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_sqlsrv, mysqli, pgsql, sqlsrv, sqlite3
111+
// in case of multiple drivers like mysqli vs pdo_mysql the pdo variant is preferred
109112
$supported = [
110-
'db2' => 'db2',
111-
'ibm-db2' => 'ibm-db2',
112-
'mssql' => 'mssql',
113+
'db2' => 'ibm_db2',
114+
'ibm-db2' => 'ibm_db2',
115+
'mssql' => 'pdo_sqlsrv',
113116
'sqlsrv+pdo' => 'pdo_sqlsrv',
114-
'mysql' => 'mysql',
115-
'mysql2' => 'mysql2',
117+
'mysql' => 'pdo_mysql',
118+
'mysql2' => 'mysqli',
116119
'mysql+pdo' => 'pdo_mysql',
117120
'pgsql' => 'pgsql',
118-
'postgres' => 'postgres',
121+
'postgres' => 'pdo_pgsql',
119122
'pgsql+pdo' => 'pdo_pgsql',
120-
'sqlite' => 'sqlite',
123+
'sqlite' => 'sqlite3',
121124
'sqlite3' => 'sqlite3',
122125
'sqlite+pdo' => 'pdo_sqlite',
123126
];
@@ -148,15 +151,11 @@ private function parseDsn(string $dsn, ?array $config = null): array
148151
$dsn = $parsedDsn->getScheme().'://root@localhost';
149152
}
150153

151-
$doctrineSupported = [];
152-
foreach ($supported as $k => $v) {
153-
$doctrineSupported[$this->prepareDsnForDoctrine($k)] = $this->prepareDsnForDoctrine($v);
154-
}
155-
$dsnParser = new DsnParser($doctrineSupported);
154+
$dsnParser = new DsnParser($supported);
156155

157156
return [
158157
'lazy' => true,
159-
'connection' => $dsnParser->parse($this->prepareDsnForDoctrine($dsn)),
158+
'connection' => $dsnParser->parse($dsn),
160159
];
161160
}
162161

@@ -169,9 +168,4 @@ private function parseDsn(string $dsn, ?array $config = null): array
169168
'connection' => ['url' => $dsn],
170169
];
171170
}
172-
173-
private function prepareDsnForDoctrine(string $dsn): string
174-
{
175-
return preg_replace('/^([a-z0-9]+)\+pdo/i', 'pdo-$1', $dsn);
176-
}
177171
}

0 commit comments

Comments
 (0)