Skip to content

Commit ebf9317

Browse files
committed
Update
1 parent 1e3561a commit ebf9317

File tree

5 files changed

+53
-18
lines changed

5 files changed

+53
-18
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,23 @@ declare(strict_types=1);
2828

2929
namespace App\Presenters;
3030

31-
use Illuminate\Database\Capsule\Manager;
31+
use Illuminate\Database\Connection;
3232
use Nette;
3333

3434

3535
final class HomepagePresenter extends Nette\Application\UI\Presenter
3636
{
37-
/** @var Manager */
37+
/** @var Connection */
3838
protected $database;
3939

40-
public function injectDatabase(Manager $database) {
40+
public function injectDatabase(Connection $database) {
4141
$this->database = $database;
4242
}
4343

4444
public function actionDefault()
4545
{
46-
$this->database->schema()->drop('users');
47-
$this->database->schema()->create('users', function ($table) {
46+
$this->database->getSchemaBuilder()->drop('users');
47+
$this->database->getSchemaBuilder()->create('users', function ($table) {
4848
$table->increments('id');
4949
$table->string('name')->unique();
5050
});

src/EloquentExtension.php

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,55 @@
66

77
use Illuminate\Database\Capsule\Manager;
88
use Nette\DI\CompilerExtension;
9+
use Nette\Schema\Expect;
10+
use Nette\Schema\Schema;
911

1012
class EloquentExtension extends CompilerExtension
1113
{
14+
public function getConfigSchema(): Schema
15+
{
16+
/** @var Schema */
17+
$schema = Expect::arrayOf(
18+
Expect::array()
19+
)->before(fn ($value) => is_array(reset($value)) || null === reset($value)
20+
? $value
21+
: ['default' => $value]
22+
);
23+
24+
return $schema;
25+
}
26+
1227
public function loadConfiguration()
1328
{
1429
$container = $this->getContainerBuilder();
15-
$config = $this->getConfig();
1630

17-
$connection = $container->addDefinition($this->prefix('connection'))
31+
$manager = $container->addDefinition($this->prefix('manager'))
1832
->setFactory(Manager::class)
19-
->addSetup('addConnection', [$config])
2033
->addSetup('setAsGlobal')
2134
->addSetup('bootEloquent')
2235
->setAutowired(true);
2336

24-
if ($container->parameters['debugMode']) {
25-
$panel = $container->addDefinition($this->prefix('panel'))
37+
$autowired = true;
38+
foreach ($this->config as $name => $config) {
39+
$config['autowired'] ??= $autowired;
40+
41+
$manager->addSetup('addConnection', [$config, $name]);
42+
43+
$connection = $container->addDefinition($this->prefix("$name.connection"))
44+
->setFactory([$manager, 'connection'], [$name])
45+
->setAutowired($config['autowired']);
46+
47+
$autowired = false;
48+
49+
if (!$container->parameters['debugMode']) {
50+
continue;
51+
}
52+
53+
$panel = $container->addDefinition($this->prefix("$name.panel"))
2654
->setFactory(EloquentPanel::class)
2755
->setAutowired(false);
28-
$connection->addSetup([$panel, 'register'], [$connection]);
56+
57+
$connection->addSetup([$panel, 'register'], [$connection, $name]);
2958
}
3059
}
3160
}

src/EloquentPanel.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,35 @@
44

55
namespace Gingdev\NetteExtension;
66

7-
use Illuminate\Database\Capsule\Manager;
7+
use Illuminate\Database\Connection;
88
use Illuminate\Events\Dispatcher;
99
use Nette\Utils\Helpers;
1010
use Tracy\Debugger;
1111
use Tracy\IBarPanel;
1212

1313
class EloquentPanel implements IBarPanel
1414
{
15+
private $connectionName;
16+
1517
private $totalTime = 0;
1618

1719
private $queries = [];
1820

19-
public function register(Manager $connection)
21+
public function register(Connection $connection, string $name)
2022
{
2123
Debugger::getBar()->addPanel($this);
22-
$connection->connection()->setEventDispatcher(new Dispatcher());
23-
$connection->connection()->listen(function ($query) {
24+
$connection->setEventDispatcher(new Dispatcher());
25+
$connection->listen(function ($query) {
2426
$this->queries[] = $query;
2527
$this->totalTime += $query->time;
2628
});
29+
$this->connectionName = $name;
2730
}
2831

2932
public function getTab()
3033
{
3134
return Helpers::capture(function () {
35+
$connectionName = $this->connectionName;
3236
$count = count($this->queries);
3337
$totalTime = $this->totalTime;
3438
require __DIR__.'/templates/tab.phtml';
@@ -41,6 +45,8 @@ public function getPanel()
4145
if (!$queries = $this->queries) {
4246
return;
4347
}
48+
$connectionName = $this->connectionName;
49+
$totalTime = $this->totalTime;
4450
require __DIR__.'/templates/panel.phtml';
4551
});
4652
}

src/templates/panel.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<h1>SQL Queries</h1>
1+
<h1>Queries: <?= count($queries) ?>, time: <?= $totalTime ?> ms, <?= $connectionName ?></h1>
22
<div class="tracy-inner tracy-Eloquent">
33
<table>
44
<tr>

src/templates/tab.phtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<span title="Eloquent">
1+
<span title="Eloquent <?= $connectionName ?>">
22
<svg viewBox="0 0 2048 2048" style="vertical-align: bottom; width:1.23em; height:1.55em">
33
<path fill="<?= ($count ? '#b079d6' : '#aaa') ?>" d="M1024 896q237 0 443-43t325-127v170q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-170q119 84 325 127t443 43zm0 768q237 0 443-43t325-127v170q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-170q119 84 325 127t443 43zm0-384q237 0 443-43t325-127v170q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-170q119 84 325 127t443 43zm0-1152q208 0 385 34.5t280 93.5 103 128v128q0 69-103 128t-280 93.5-385 34.5-385-34.5-280-93.5-103-128v-128q0-69 103-128t280-93.5 385-34.5z"/>
44
</svg>
5-
<span class="tracy-label" title="Eloquent"><?= $count ?> queries <?= ($totalTime ? ' / '.$totalTime.' ms' : '') ?></span>
5+
<span class="tracy-label" title="Eloquent <?= $connectionName ?>"><?= $count ?><?= ($totalTime ? ' / '.$totalTime.' ms' : '') ?></span>
66
</span>

0 commit comments

Comments
 (0)