1717use Laudis \Neo4j \Types \CypherList ;
1818use Laudis \Neo4j \Types \CypherMap ;
1919use Neo4j \Neo4jBundle \Factories \SymfonyDriverFactory ;
20+ use Override ;
2021
21- /**
22- * A collection of drivers with methods to run queries though them.
23- *
24- * @implements ClientInterface<SummarizedResult<CypherMap>>
25- *
26- * @psalm-external-mutation-free
27- *
28- * @psalm-suppress ImpureMethodCall
29- */
30- class SymfonyClient implements ClientInterface
22+ final class SymfonyClient implements ClientInterface
3123{
3224 /**
3325 * @var array<string, list<SymfonyTransaction>>
@@ -42,7 +34,7 @@ class SymfonyClient implements ClientInterface
4234 /**
4335 * @psalm-mutation-free
4436 *
45- * @param DriverSetupManager<mixed> $driverSetups
37+ * @param DriverSetupManager $driverSetups
4638 */
4739 public function __construct (
4840 private readonly DriverSetupManager $ driverSetups ,
@@ -62,11 +54,13 @@ public function getDefaultTransactionConfiguration(): TransactionConfiguration
6254 return $ this ->defaultTransactionConfiguration ;
6355 }
6456
57+ #[Override]
6558 public function run (string $ statement , iterable $ parameters = [], ?string $ alias = null ): SummarizedResult
6659 {
6760 return $ this ->runStatement (Statement::create ($ statement , $ parameters ), $ alias );
6861 }
6962
63+ #[Override]
7064 public function runStatement (Statement $ statement , ?string $ alias = null ): SummarizedResult
7165 {
7266 return $ this ->runStatements ([$ statement ], $ alias )->first ();
@@ -97,6 +91,7 @@ private function getSession(?string $alias = null): SymfonySession
9791 return $ this ->boundSessions [$ alias ] = $ this ->startSession ($ alias , $ this ->defaultSessionConfiguration );
9892 }
9993
94+ #[Override]
10095 public function runStatements (iterable $ statements , ?string $ alias = null ): CypherList
10196 {
10297 $ runner = $ this ->getRunner ($ alias );
@@ -107,6 +102,7 @@ public function runStatements(iterable $statements, ?string $alias = null): Cyph
107102 return $ runner ->runStatements ($ statements );
108103 }
109104
105+ #[Override]
110106 public function beginTransaction (?iterable $ statements = null , ?string $ alias = null , ?TransactionConfiguration $ config = null ): SymfonyTransaction
111107 {
112108 $ session = $ this ->getSession ($ alias );
@@ -115,6 +111,7 @@ public function beginTransaction(?iterable $statements = null, ?string $alias =
115111 return $ session ->beginTransaction ($ statements , $ config );
116112 }
117113
114+ #[Override]
118115 public function getDriver (?string $ alias ): SymfonyDriver
119116 {
120117 return $ this ->factory ->createDriver (
@@ -141,6 +138,7 @@ private function startSession(?string $alias, SessionConfiguration $configuratio
141138 *
142139 * @return HandlerResult
143140 */
141+ #[Override]
144142 public function writeTransaction (callable $ tsxHandler , ?string $ alias = null , ?TransactionConfiguration $ config = null ): mixed
145143 {
146144 if ($ this ->defaultSessionConfiguration ->getAccessMode () === AccessMode::WRITE ()) {
@@ -160,6 +158,7 @@ public function writeTransaction(callable $tsxHandler, ?string $alias = null, ?T
160158 *
161159 * @return HandlerResult
162160 */
161+ #[Override]
163162 public function readTransaction (callable $ tsxHandler , ?string $ alias = null , ?TransactionConfiguration $ config = null ): mixed
164163 {
165164 if ($ this ->defaultSessionConfiguration ->getAccessMode () === AccessMode::READ ()) {
@@ -179,21 +178,25 @@ public function readTransaction(callable $tsxHandler, ?string $alias = null, ?Tr
179178 *
180179 * @return HandlerResult
181180 */
181+ #[Override]
182182 public function transaction (callable $ tsxHandler , ?string $ alias = null , ?TransactionConfiguration $ config = null )
183183 {
184184 return $ this ->writeTransaction ($ tsxHandler , $ alias , $ config );
185185 }
186186
187+ #[Override]
187188 public function verifyConnectivity (?string $ driver = null ): bool
188189 {
189190 return $ this ->driverSetups ->verifyConnectivity ($ this ->defaultSessionConfiguration , $ driver );
190191 }
191192
193+ #[Override]
192194 public function hasDriver (string $ alias ): bool
193195 {
194196 return $ this ->driverSetups ->hasDriver ($ alias );
195197 }
196198
199+ #[Override]
197200 public function bindTransaction (?string $ alias = null , ?TransactionConfiguration $ config = null ): void
198201 {
199202 $ alias ??= $ this ->driverSetups ->getDefaultAlias ();
@@ -202,6 +205,7 @@ public function bindTransaction(?string $alias = null, ?TransactionConfiguration
202205 $ this ->boundTransactions [$ alias ][] = $ this ->beginTransaction (null , $ alias , $ config );
203206 }
204207
208+ #[Override]
205209 public function rollbackBoundTransaction (?string $ alias = null , int $ depth = 1 ): void
206210 {
207211 $ this ->popTransactions (static fn (SymfonyTransaction $ tsx ) => $ tsx ->rollback (), $ alias , $ depth );
@@ -227,6 +231,7 @@ private function popTransactions(callable $handler, ?string $alias = null, int $
227231 }
228232 }
229233
234+ #[Override]
230235 public function commitBoundTransaction (?string $ alias = null , int $ depth = 1 ): void
231236 {
232237 $ this ->popTransactions (static fn (UnmanagedTransactionInterface $ tsx ) => $ tsx ->commit (), $ alias , $ depth );
0 commit comments