Skip to content

Commit 4b217c8

Browse files
committed
refactor: Create factory for messages
1 parent 7913dac commit 4b217c8

File tree

2 files changed

+83
-5
lines changed

2 files changed

+83
-5
lines changed

src/Bolt/BoltConnection.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
use Bolt\protocol\V5_3;
2424
use Bolt\protocol\V5_4;
2525
use Exception;
26-
use Laudis\Neo4j\Bolt\Messages\BoltGoodbyeMessage;
2726
use Laudis\Neo4j\Common\ConnectionConfiguration;
2827
use Laudis\Neo4j\Common\Neo4jLogger;
2928
use Laudis\Neo4j\Contracts\AuthenticateInterface;
@@ -334,10 +333,7 @@ public function close(): void
334333
$this->consumeResults();
335334
}
336335

337-
$message = new BoltGoodbyeMessage(
338-
$this->protocol(),
339-
$this->logger
340-
);
336+
$message = $this->messageFactory->createGoodbyeMessage();
341337
$message->send();
342338

343339
unset($this->boltProtocol); // has to be set to null as the sockets don't recover nicely contrary to what the underlying code might lead you to believe;

src/Bolt/BoltMessageFactory.php

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* This file is part of the Neo4j PHP Client and Driver package.
7+
*
8+
* (c) Nagels <https://nagels.tech>
9+
*
10+
* For the full copyright and license information, please view the LICENSE
11+
* file that was distributed with this source code.
12+
*/
13+
14+
namespace Laudis\Neo4j\Bolt;
15+
16+
use Bolt\protocol\V4_4;
17+
use Bolt\protocol\V5;
18+
use Bolt\protocol\V5_1;
19+
use Bolt\protocol\V5_2;
20+
use Bolt\protocol\V5_3;
21+
use Bolt\protocol\V5_4;
22+
use Laudis\Neo4j\Bolt\Messages\BoltBeginMessage;
23+
use Laudis\Neo4j\Bolt\Messages\BoltCommitMessage;
24+
use Laudis\Neo4j\Bolt\Messages\BoltDiscardMessage;
25+
use Laudis\Neo4j\Bolt\Messages\BoltGoodbyeMessage;
26+
use Laudis\Neo4j\Bolt\Messages\BoltPullMessage;
27+
use Laudis\Neo4j\Bolt\Messages\BoltResetMessage;
28+
use Laudis\Neo4j\Bolt\Messages\BoltRollbackMessage;
29+
use Laudis\Neo4j\Bolt\Messages\BoltRunMessage;
30+
use Laudis\Neo4j\Common\Neo4jLogger;
31+
32+
/**
33+
* Factory class for creating Bolt protocol messages.
34+
*/
35+
final class BoltMessageFactory
36+
{
37+
public function __construct(
38+
private readonly V4_4|V5|V5_1|V5_2|V5_3|V5_4 $protocol,
39+
private readonly ?Neo4jLogger $logger = null,
40+
) {
41+
}
42+
43+
public function createResetMessage(): BoltResetMessage
44+
{
45+
return new BoltResetMessage($this->protocol, $this->logger);
46+
}
47+
48+
public function createBeginMessage(array $extra): BoltBeginMessage
49+
{
50+
return new BoltBeginMessage($this->protocol, $extra, $this->logger);
51+
}
52+
53+
public function createDiscardMessage(array $extra): BoltDiscardMessage
54+
{
55+
return new BoltDiscardMessage($this->protocol, $extra, $this->logger);
56+
}
57+
58+
public function createRunMessage(string $text, array $parameters, array $extra): BoltRunMessage
59+
{
60+
return new BoltRunMessage($this->protocol, $text, $parameters, $extra, $this->logger);
61+
}
62+
63+
public function createCommitMessage(): BoltCommitMessage
64+
{
65+
return new BoltCommitMessage($this->protocol, $this->logger);
66+
}
67+
68+
public function createRollbackMessage(): BoltRollbackMessage
69+
{
70+
return new BoltRollbackMessage($this->protocol, $this->logger);
71+
}
72+
73+
public function createPullMessage(array $extra): BoltPullMessage
74+
{
75+
return new BoltPullMessage($this->protocol, $extra, $this->logger);
76+
}
77+
78+
public function createGoodbyeMessage(): BoltGoodbyeMessage
79+
{
80+
return new BoltGoodbyeMessage($this->protocol, $this->logger);
81+
}
82+
}

0 commit comments

Comments
 (0)