|
18 | 18 | use function is_int;
|
19 | 19 | use Laudis\Neo4j\Contracts\ConnectionInterface;
|
20 | 20 | use Laudis\Neo4j\Contracts\FormatterInterface;
|
| 21 | +use Laudis\Neo4j\Databags\Result; |
21 | 22 | use Laudis\Neo4j\Databags\ResultSummary;
|
22 | 23 | use Laudis\Neo4j\Databags\ServerInfo;
|
23 | 24 | use Laudis\Neo4j\Databags\Statement;
|
24 | 25 | use Laudis\Neo4j\Databags\SummaryCounters;
|
25 | 26 | use Laudis\Neo4j\Enum\QueryTypeEnum;
|
26 |
| -use Laudis\Neo4j\Result; |
27 | 27 | use Laudis\Neo4j\Types\CypherList;
|
28 | 28 | use Psr\Http\Message\RequestInterface;
|
29 | 29 | use Psr\Http\Message\ResponseInterface;
|
30 | 30 | use UnexpectedValueException;
|
31 | 31 |
|
32 | 32 | /**
|
| 33 | + * @template T |
| 34 | + * |
33 | 35 | * @psalm-import-type CypherResponseSet from \Laudis\Neo4j\Contracts\FormatterInterface
|
34 | 36 | * @psalm-import-type CypherResponse from \Laudis\Neo4j\Contracts\FormatterInterface
|
35 | 37 | * @psalm-import-type BoltCypherStats from \Laudis\Neo4j\Contracts\FormatterInterface
|
36 | 38 | *
|
37 |
| - * @implements FormatterInterface<Result> |
| 39 | + * @implements FormatterInterface<Result<T>> |
38 | 40 | */
|
39 | 41 | final class ResultFormatter implements FormatterInterface
|
40 | 42 | {
|
| 43 | + /** @var FormatterInterface<T> */ |
41 | 44 | private FormatterInterface $formatter;
|
42 | 45 |
|
| 46 | + /** |
| 47 | + * @param FormatterInterface<T> $formatter |
| 48 | + */ |
43 | 49 | public function __construct(FormatterInterface $formatter)
|
44 | 50 | {
|
45 | 51 | $this->formatter = $formatter;
|
46 | 52 | }
|
47 | 53 |
|
48 |
| - /** |
49 |
| - * @param CypherResponse $response |
50 |
| - */ |
51 | 54 | public function formatHttpStats(array $response, ConnectionInterface $connection, Statement $statement, float $resultAvailableAfter, float $resultConsumedAfter, CypherList $results): Result
|
52 | 55 | {
|
53 | 56 | if (!isset($response['stats'])) {
|
@@ -88,11 +91,7 @@ public function formatHttpStats(array $response, ConnectionInterface $connection
|
88 | 91 | )
|
89 | 92 | );
|
90 | 93 |
|
91 |
| - return new Result( |
92 |
| - new CypherList(new Vector($response['columns'])), |
93 |
| - $summary, |
94 |
| - $results |
95 |
| - ); |
| 94 | + return new Result($results, $summary); |
96 | 95 | }
|
97 | 96 |
|
98 | 97 | /**
|
@@ -141,28 +140,25 @@ public function formatBoltResult(array $meta, array $results, ConnectionInterfac
|
141 | 140 | $response = $results[$last];
|
142 | 141 |
|
143 | 142 | $counters = $this->formatBoltStats($response);
|
144 |
| - $columns = $meta['fields']; |
145 |
| - |
146 |
| - return new Result( |
147 |
| - new CypherList(new Vector($columns)), |
148 |
| - new ResultSummary( |
149 |
| - $counters, |
150 |
| - $connection->getDatabaseInfo(), |
151 |
| - new CypherList(new Vector()), |
152 |
| - null, |
153 |
| - null, |
154 |
| - $statement, |
155 |
| - QueryTypeEnum::fromCounters($counters), |
156 |
| - $resultAvailableAfter, |
157 |
| - $resultConsumedAfter, |
158 |
| - new ServerInfo( |
159 |
| - $connection->getServerAddress(), |
160 |
| - $connection->getProtocol(), |
161 |
| - $connection->getServerAgent() |
162 |
| - ) |
163 |
| - ), |
164 |
| - $this->formatter->formatBoltResult($meta, $results, $connection, $resultAvailableAfter, $resultConsumedAfter, $statement) |
| 143 | + $summary = new ResultSummary( |
| 144 | + $counters, |
| 145 | + $connection->getDatabaseInfo(), |
| 146 | + new CypherList(new Vector()), |
| 147 | + null, |
| 148 | + null, |
| 149 | + $statement, |
| 150 | + QueryTypeEnum::fromCounters($counters), |
| 151 | + $resultAvailableAfter, |
| 152 | + $resultConsumedAfter, |
| 153 | + new ServerInfo( |
| 154 | + $connection->getServerAddress(), |
| 155 | + $connection->getProtocol(), |
| 156 | + $connection->getServerAgent() |
| 157 | + ) |
165 | 158 | );
|
| 159 | + $formattedResult = $this->formatter->formatBoltResult($meta, $results, $connection, $resultAvailableAfter, $resultConsumedAfter, $statement); |
| 160 | + |
| 161 | + return new Result($formattedResult, $summary); |
166 | 162 | }
|
167 | 163 |
|
168 | 164 | public function formatHttpResult(ResponseInterface $response, array $body, ConnectionInterface $connection, float $resultsAvailableAfter, float $resultsConsumedAfter, iterable $statements): CypherList
|
|
0 commit comments