File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed
Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1515 "infinityloop-dev/utils" : " ^2.1" ,
1616 "nette/utils" : " ^3.0" ,
1717 "nette/database" : " ^3.1" ,
18+ "nette/di" : " ^3.0" ,
1819 "nette/robot-loader" : " ^3.3" ,
1920 "symfony/console" : " ^5.2"
2021 },
4344 "psr-4" : {
4445 "CoolBeans\\ Tests\\ " : " tests/"
4546 }
47+ },
48+ "config" : {
49+ "allow-plugins" : {
50+ "dealerdirect/phpcodesniffer-composer-installer" : true ,
51+ "infection/extension-installer" : true
52+ }
4653 }
4754}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types = 1 );
4+
5+ namespace CoolBeans \Bridge \Nette ;
6+
7+ final class Connection extends \Nette \Database \Connection
8+ {
9+ public function query (string $ sql , ...$ params ): \Nette \Database \ResultSet
10+ {
11+ try {
12+ return parent ::query ($ sql , $ params );
13+ } catch (\PDOException $ e ) {
14+ if ($ e ->getCode () === 'HY000 ' && \str_contains ($ e ->getMessage (), 'gone away ' )) {
15+ $ this ->reconnect ();
16+
17+ return parent ::query ($ sql , $ params ); // retry
18+ }
19+
20+ throw $ e ;
21+ }
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types = 1 );
4+
5+ namespace CoolBeans \Bridge \Nette ;
6+
7+ final class CoolbeansExtension extends \Nette \DI \CompilerExtension
8+ {
9+ public function beforeCompile () : void
10+ {
11+ $ builder = $ this ->getContainerBuilder ();
12+
13+ foreach ($ builder ->findByType (\Nette \Database \Connection::class) as $ definition ) {
14+ \assert ($ definition instanceof \Nette \DI \Definitions \ServiceDefinition);
15+
16+ $ definition ->setFactory (new \Nette \DI \Definitions \Statement (Connection::class, $ definition ->getFactory ()->arguments ));
17+ }
18+ }
19+ }
You can’t perform that action at this time.
0 commit comments