|
13 | 13 |
|
14 | 14 | namespace Laudis\Neo4j\Formatter;
|
15 | 15 |
|
| 16 | +use function array_key_exists; |
16 | 17 | use Bolt\structures\Path;
|
17 | 18 | use function get_class;
|
18 | 19 | use function gettype;
|
19 | 20 | use function is_array;
|
20 | 21 | use function is_object;
|
| 22 | +use function is_string; |
21 | 23 | use Laudis\Neo4j\Bolt\BoltConnection;
|
22 | 24 | use Laudis\Neo4j\Bolt\BoltResult;
|
23 | 25 | use Laudis\Neo4j\Contracts\ConnectionInterface;
|
24 | 26 | use Laudis\Neo4j\Contracts\FormatterInterface;
|
| 27 | +use Laudis\Neo4j\Databags\Bookmark; |
25 | 28 | use Laudis\Neo4j\Databags\BookmarkHolder;
|
26 | 29 | use Laudis\Neo4j\Databags\Statement;
|
27 | 30 | use Laudis\Neo4j\Types\CypherList;
|
@@ -56,17 +59,22 @@ public static function create(): self
|
56 | 59 | *
|
57 | 60 | * @return CypherList<CypherMap<array|scalar|null>>
|
58 | 61 | */
|
59 |
| - public function formatBoltResult(array $meta, BoltResult $result, BoltConnection $connection, ?float $runStart, ?float $resultAvailableAfter, ?Statement $statement, ?BookmarkHolder $holder = null): CypherList |
| 62 | + public function formatBoltResult(array $meta, BoltResult $result, BoltConnection $connection, float $runStart, float $resultAvailableAfter, Statement $statement, BookmarkHolder $holder): CypherList |
60 | 63 | {
|
61 |
| - $result = (new CypherList(function () use ($meta, $result) { |
| 64 | + $tbr = (new CypherList(function () use ($meta, $result) { |
62 | 65 | foreach ($result as $row) {
|
63 | 66 | yield $this->formatRow($meta, $row);
|
64 | 67 | }
|
65 | 68 | }))->withCacheLimit($result->getFetchSize());
|
66 | 69 |
|
67 |
| - $connection->subscribeResult($result); |
| 70 | + $connection->subscribeResult($tbr); |
| 71 | + $result->addFinishedCallback(function (array $response) use ($holder) { |
| 72 | + if (array_key_exists('bookmark', $response) && is_string($response['bookmark'])) { |
| 73 | + $holder->setBookmark(new Bookmark([$response['bookmark']])); |
| 74 | + } |
| 75 | + }); |
68 | 76 |
|
69 |
| - return $result; |
| 77 | + return $tbr; |
70 | 78 | }
|
71 | 79 |
|
72 | 80 | /**
|
|
0 commit comments