Skip to content

Commit 58be4c3

Browse files
committed
feat: use overrides for connection settings
1 parent 3a38bf9 commit 58be4c3

File tree

5 files changed

+141
-88
lines changed

5 files changed

+141
-88
lines changed

src/Configuration/Connections/MysqlConnection.php

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
namespace LaravelDoctrine\ORM\Configuration\Connections;
66

7-
use Illuminate\Support\Arr;
8-
97
class MysqlConnection extends Connection
108
{
119
/**
@@ -15,25 +13,31 @@ class MysqlConnection extends Connection
1513
*/
1614
public function resolve(array $settings = []): array
1715
{
18-
return [
19-
'driver' => 'pdo_mysql',
20-
'host' => Arr::get($settings, 'host'),
21-
'dbname' => Arr::get($settings, 'database'),
22-
'user' => Arr::get($settings, 'username'),
23-
'password' => Arr::get($settings, 'password'),
24-
'charset' => Arr::get($settings, 'charset'),
25-
'port' => Arr::get($settings, 'port'),
26-
'unix_socket' => Arr::get($settings, 'unix_socket'),
27-
'ssl_key' => Arr::get($settings, 'ssl_key'),
28-
'ssl_cert' => Arr::get($settings, 'ssl_cert'),
29-
'ssl_ca' => Arr::get($settings, 'ssl_ca'),
30-
'ssl_capath' => Arr::get($settings, 'ssl_capath'),
31-
'ssl_cipher' => Arr::get($settings, 'ssl_cipher'),
32-
'prefix' => Arr::get($settings, 'prefix'),
33-
'defaultTableOptions' => Arr::get($settings, 'defaultTableOptions', []),
34-
'serverVersion' => Arr::get($settings, 'serverVersion'),
35-
'wrapperClass' => Arr::get($settings, 'wrapperClass'),
36-
'driverOptions' => Arr::get($settings, 'options', []),
16+
$overrides = [
17+
'driver' => 'pdo_mysql',
3718
];
19+
20+
// Map Laravel keys to Doctrine DBAL keys
21+
if (isset($settings['database'])) {
22+
$overrides['dbname'] = $settings['database'];
23+
unset($settings['database']);
24+
}
25+
26+
if (isset($settings['username'])) {
27+
$overrides['user'] = $settings['username'];
28+
unset($settings['username']);
29+
}
30+
31+
if (isset($settings['options'])) {
32+
$overrides['driverOptions'] = $settings['options'];
33+
unset($settings['options']);
34+
}
35+
36+
// Set default for defaultTableOptions if not present
37+
if (!isset($settings['defaultTableOptions'])) {
38+
$overrides['defaultTableOptions'] = [];
39+
}
40+
41+
return array_merge($settings, $overrides);
3842
}
3943
}

src/Configuration/Connections/OracleConnection.php

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,36 @@ class OracleConnection extends Connection
1515
*/
1616
public function resolve(array $settings = []): array
1717
{
18-
return [
19-
'driver' => 'oci8',
20-
'host' => Arr::get($settings, 'host'),
21-
'dbname' => Arr::get($settings, 'database'),
22-
'servicename' => Arr::get($settings, 'service_name'),
23-
'service' => Arr::get($settings, 'service'),
24-
'user' => Arr::get($settings, 'username'),
25-
'password' => Arr::get($settings, 'password'),
26-
'charset' => Arr::get($settings, 'charset'),
27-
'port' => Arr::get($settings, 'port'),
28-
'prefix' => Arr::get($settings, 'prefix'),
29-
'defaultTableOptions' => Arr::get($settings, 'defaultTableOptions', []),
30-
'persistent' => Arr::get($settings, 'persistent'),
31-
'wrapperClass' => Arr::get($settings, 'wrapperClass'),
32-
'connectstring' => Arr::get($settings, 'connectstring'),
18+
$overrides = [
19+
'driver' => 'oci8',
3320
];
21+
22+
// Map Laravel keys to Doctrine DBAL keys
23+
if (isset($settings['database'])) {
24+
$overrides['dbname'] = $settings['database'];
25+
unset($settings['database']);
26+
}
27+
28+
if (isset($settings['username'])) {
29+
$overrides['user'] = $settings['username'];
30+
unset($settings['username']);
31+
}
32+
33+
if (isset($settings['service_name'])) {
34+
$overrides['servicename'] = $settings['service_name'];
35+
unset($settings['service_name']);
36+
}
37+
38+
if (isset($settings['options'])) {
39+
$overrides['driverOptions'] = $settings['options'];
40+
unset($settings['options']);
41+
}
42+
43+
// Set default for defaultTableOptions if not present
44+
if (!isset($settings['defaultTableOptions'])) {
45+
$overrides['defaultTableOptions'] = [];
46+
}
47+
48+
return array_merge($settings, $overrides);
3449
}
3550
}

src/Configuration/Connections/PgsqlConnection.php

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,31 @@ class PgsqlConnection extends Connection
1515
*/
1616
public function resolve(array $settings = []): array
1717
{
18-
return [
19-
'driver' => 'pdo_pgsql',
20-
'host' => Arr::get($settings, 'host'),
21-
'dbname' => Arr::get($settings, 'database'),
22-
'user' => Arr::get($settings, 'username'),
23-
'password' => Arr::get($settings, 'password'),
24-
'charset' => Arr::get($settings, 'charset'),
25-
'port' => Arr::get($settings, 'port'),
26-
'sslmode' => Arr::get($settings, 'sslmode'),
27-
'sslkey' => Arr::get($settings, 'sslkey'),
28-
'sslcert' => Arr::get($settings, 'sslcert'),
29-
'sslrootcert' => Arr::get($settings, 'sslrootcert'),
30-
'sslcrl' => Arr::get($settings, 'sslcrl'),
31-
'gssencmode' => Arr::get($settings, 'gssencmode'),
32-
'prefix' => Arr::get($settings, 'prefix'),
33-
'defaultTableOptions' => Arr::get($settings, 'defaultTableOptions', []),
34-
'serverVersion' => Arr::get($settings, 'serverVersion'),
35-
'wrapperClass' => Arr::get($settings, 'wrapperClass'),
36-
'driverOptions' => Arr::get($settings, 'options', []),
18+
$overrides = [
19+
'driver' => 'pdo_pgsql',
3720
];
21+
22+
// Map Laravel keys to Doctrine DBAL keys
23+
if (isset($settings['database'])) {
24+
$overrides['dbname'] = $settings['database'];
25+
unset($settings['database']);
26+
}
27+
28+
if (isset($settings['username'])) {
29+
$overrides['user'] = $settings['username'];
30+
unset($settings['username']);
31+
}
32+
33+
if (isset($settings['options'])) {
34+
$overrides['driverOptions'] = $settings['options'];
35+
unset($settings['options']);
36+
}
37+
38+
// Set default for defaultTableOptions if not present
39+
if (!isset($settings['defaultTableOptions'])) {
40+
$overrides['defaultTableOptions'] = [];
41+
}
42+
43+
return array_merge($settings, $overrides);
3844
}
3945
}

src/Configuration/Connections/SqliteConnection.php

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,34 @@ class SqliteConnection extends Connection
1616
*/
1717
public function resolve(array $settings = []): array
1818
{
19-
return [
20-
'driver' => 'pdo_sqlite',
21-
'user' => Arr::get($settings, 'username'),
22-
'password' => Arr::get($settings, 'password'),
23-
'prefix' => Arr::get($settings, 'prefix'),
24-
'memory' => $this->isMemory($settings),
25-
'path' => Arr::get($settings, 'database'),
26-
'defaultTableOptions' => Arr::get($settings, 'defaultTableOptions', []),
27-
'driverOptions' => Arr::get($settings, 'options', []),
28-
'wrapperClass' => Arr::get($settings, 'wrapperClass'),
19+
$overrides = [
20+
'driver' => 'pdo_sqlite',
2921
];
22+
23+
$overrides['memory'] = $this->isMemory($settings);
24+
25+
// Map Laravel keys to Doctrine DBAL keys
26+
if (isset($settings['database'])) {
27+
$overrides['path'] = $settings['database'];
28+
unset($settings['database']);
29+
}
30+
31+
if (isset($settings['username'])) {
32+
$overrides['user'] = $settings['username'];
33+
unset($settings['username']);
34+
}
35+
36+
if (isset($settings['options'])) {
37+
$overrides['driverOptions'] = $settings['options'];
38+
unset($settings['options']);
39+
}
40+
41+
// Set default for defaultTableOptions if not present
42+
if (!isset($settings['defaultTableOptions'])) {
43+
$overrides['defaultTableOptions'] = [];
44+
}
45+
46+
return array_merge($settings, $overrides);
3047
}
3148

3249
/** @param mixed[] $settings */

src/Configuration/Connections/SqlsrvConnection.php

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,40 @@ class SqlsrvConnection extends Connection
1717
*/
1818
public function resolve(array $settings = []): array
1919
{
20-
return [
21-
'driver' => 'pdo_sqlsrv',
22-
'host' => Arr::get($settings, 'host'),
23-
'dbname' => Arr::get($settings, 'database'),
24-
'user' => Arr::get($settings, 'username'),
25-
'password' => Arr::get($settings, 'password'),
26-
'port' => Arr::get($settings, 'port'),
27-
'prefix' => Arr::get($settings, 'prefix'),
28-
'charset' => Arr::get($settings, 'charset'),
29-
'defaultTableOptions' => Arr::get($settings, 'defaultTableOptions', []),
30-
'serverVersion' => Arr::get($settings, 'serverVersion'),
31-
'wrapperClass' => Arr::get($settings, 'wrapperClass'),
32-
'driverOptions' => array_merge(
33-
Arr::get($settings, 'options', []),
34-
// @codeCoverageIgnoreStart
35-
isset($settings['encrypt'])
36-
? ['encrypt' => Arr::get($settings, 'encrypt')]
37-
: [],
38-
isset($settings['trust_server_certificate'])
39-
? ['trustServerCertificate' => Arr::get($settings, 'trust_server_certificate')]
40-
: [],
41-
// @codeCoverageIgnoreEnd
42-
),
20+
$overrides = [
21+
'driver' => 'pdo_sqlsrv',
4322
];
23+
24+
// Map Laravel keys to Doctrine DBAL keys
25+
if (isset($settings['database'])) {
26+
$overrides['dbname'] = $settings['database'];
27+
unset($settings['database']);
28+
}
29+
30+
if (isset($settings['username'])) {
31+
$overrides['user'] = $settings['username'];
32+
unset($settings['username']);
33+
}
34+
35+
$overrides['driverOptions'] = [];
36+
if (isset($settings['options'])) {
37+
$overrides['driverOptions'] = $settings['options'];
38+
unset($settings['options']);
39+
}
40+
41+
if (isset($settings['encrypt'])) {
42+
$overrides['driverOptions']['encrypt'] = $settings['encrypt'];
43+
}
44+
45+
if (isset($settings['trust_server_certificate'])) {
46+
$overrides['driverOptions']['trustServerCertificate'] = $settings['trust_server_certificate'];
47+
}
48+
49+
// Set default for defaultTableOptions if not present
50+
if (!isset($settings['defaultTableOptions'])) {
51+
$overrides['defaultTableOptions'] = [];
52+
}
53+
54+
return array_merge($settings, $overrides);
4455
}
4556
}

0 commit comments

Comments
 (0)