Skip to content

Commit a7eb6d7

Browse files
committed
DatabaseExtension: detects Tracy by presence of service @tracy\BlueScreen [Closes nette/di#245]
1 parent 60e4c5d commit a7eb6d7

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/Bridges/DatabaseDI/DatabaseExtension.php

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function getConfigSchema(): Nette\Schema\Schema
3636
'user' => Expect::string()->nullable()->dynamic(),
3737
'password' => Expect::string()->nullable()->dynamic(),
3838
'options' => Expect::array(),
39-
'debugger' => Expect::bool(true),
39+
'debugger' => Expect::bool(),
4040
'explain' => Expect::bool(true),
4141
'reflection' => Expect::string(), // BC
4242
'conventions' => Expect::string('discovered'), // Nette\Database\Conventions\DiscoveredConventions
@@ -61,6 +61,24 @@ public function loadConfiguration()
6161
}
6262

6363

64+
public function beforeCompile()
65+
{
66+
$builder = $this->getContainerBuilder();
67+
68+
foreach ($this->config as $name => $config) {
69+
if ($config->debugger ?? $builder->getByType(\Tracy\BlueScreen::class)) {
70+
$connection = $builder->getDefinition($this->prefix("$name.connection"));
71+
$connection->addSetup('@Tracy\BlueScreen::addPanel', [
72+
[Nette\Bridges\DatabaseTracy\ConnectionPanel::class, 'renderException'],
73+
]);
74+
if ($this->debugMode) {
75+
$connection->addSetup([Nette\Database\Helpers::class, 'createDebugPanel'], [$connection, !empty($config->explain), $name]);
76+
}
77+
}
78+
}
79+
}
80+
81+
6482
private function setupDatabase(\stdClass $config, string $name): void
6583
{
6684
$builder = $this->getContainerBuilder();
@@ -113,15 +131,6 @@ private function setupDatabase(\stdClass $config, string $name): void
113131
->setFactory(Nette\Database\Context::class, [$connection, $structure, $conventions])
114132
->setAutowired($config->autowired);
115133

116-
if ($config->debugger) {
117-
$connection->addSetup('@Tracy\BlueScreen::addPanel', [
118-
[Nette\Bridges\DatabaseTracy\ConnectionPanel::class, 'renderException'],
119-
]);
120-
if ($this->debugMode) {
121-
$connection->addSetup([Nette\Database\Helpers::class, 'createDebugPanel'], [$connection, !empty($config->explain), $name]);
122-
}
123-
}
124-
125134
if ($this->name === 'database') {
126135
$builder->addAlias($this->prefix($name), $this->prefix("$name.connection"));
127136
$builder->addAlias("nette.database.$name", $this->prefix($name));

0 commit comments

Comments
 (0)