Skip to content

Commit 0394290

Browse files
committed
subscribed other formatter results as well to connections
1 parent b19b936 commit 0394290

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

src/Bolt/BoltConnection.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Bolt\error\MessageException;
1919
use Bolt\protocol\V3;
2020
use Bolt\protocol\V4;
21+
use Laudis\Neo4j\Types\CypherList;
2122
use function count;
2223
use Laudis\Neo4j\BoltFactory;
2324
use Laudis\Neo4j\Common\ConnectionConfiguration;
@@ -48,7 +49,7 @@ final class BoltConnection implements ConnectionInterface
4849

4950
private int $ownerCount = 0;
5051
private string $serverState = 'DISCONNECTED';
51-
/** @var list<WeakReference<SummarizedResult>> */
52+
/** @var list<WeakReference<CypherList>> */
5253
private array $subscribedResults = [];
5354

5455
/**
@@ -411,7 +412,7 @@ public function getServerState(): string
411412
return $this->serverState;
412413
}
413414

414-
public function subscribeResult(SummarizedResult $result): void
415+
public function subscribeResult(CypherList $result): void
415416
{
416417
$this->subscribedResults[] = WeakReference::create($result);
417418
}

src/Formatter/BasicFormatter.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use function gettype;
1919
use function is_array;
2020
use function is_object;
21+
use Laudis\Neo4j\Bolt\BoltConnection;
2122
use Laudis\Neo4j\Bolt\BoltResult;
2223
use Laudis\Neo4j\Contracts\ConnectionInterface;
2324
use Laudis\Neo4j\Contracts\FormatterInterface;
@@ -54,13 +55,17 @@ public static function create(): self
5455
*
5556
* @return CypherList<CypherMap<array|scalar|null>>
5657
*/
57-
public function formatBoltResult(array $meta, BoltResult $result, ?ConnectionInterface $connection = null, ?float $runStart = null, ?float $resultAvailableAfter = null, ?Statement $statement = null): CypherList
58+
public function formatBoltResult(array $meta, BoltResult $result, ?BoltConnection $connection = null, ?float $runStart = null, ?float $resultAvailableAfter = null, ?Statement $statement = null): CypherList
5859
{
59-
return (new CypherList(function () use ($meta, $result) {
60+
$result = (new CypherList(function () use ($meta, $result) {
6061
foreach ($result as $row) {
6162
yield $this->formatRow($meta, $row);
6263
}
6364
}))->withCacheLimit($result->getFetchSize());
65+
66+
$connection->subscribeResult($result);
67+
68+
return $result;
6469
}
6570

6671
/**

src/Formatter/OGMFormatter.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
namespace Laudis\Neo4j\Formatter;
1515

16+
use Laudis\Neo4j\Bolt\BoltConnection;
1617
use Laudis\Neo4j\Bolt\BoltResult;
1718
use Laudis\Neo4j\Contracts\ConnectionInterface;
1819
use Laudis\Neo4j\Contracts\FormatterInterface;
@@ -71,13 +72,17 @@ public static function create(): OGMFormatter
7172
*
7273
* @return CypherList<CypherMap<OGMTypes>>
7374
*/
74-
public function formatBoltResult(array $meta, BoltResult $result, ConnectionInterface $connection, float $runStart, float $resultAvailableAfter, Statement $statement): CypherList
75+
public function formatBoltResult(array $meta, BoltResult $result, BoltConnection $connection, float $runStart, float $resultAvailableAfter, Statement $statement): CypherList
7576
{
76-
return (new CypherList(function () use ($result, $meta) {
77+
$tbr = (new CypherList(function () use ($result, $meta) {
7778
foreach ($result as $row) {
7879
yield $this->formatRow($meta, $row);
7980
}
8081
}))->withCacheLimit($result->getFetchSize());
82+
83+
$connection->subscribeResult($tbr);
84+
85+
return $tbr;
8186
}
8287

8388
/**

0 commit comments

Comments
 (0)