55use Express \Core \Application ;
66use Express \Http \Request ;
77use Express \Http \Response ;
8+ use CAFernandes \ExpressPHP \CycleORM \Http \CycleRequest ;
89
910class TransactionMiddleware
1011{
@@ -18,9 +19,9 @@ public function __construct(Application $app)
1819 /**
1920 * Compatível com padrão callable do Express-PHP.
2021 *
21- * @param callable(Request , Response):void $next função next do Express-PHP, recebe Request e Response
22+ * @param callable($req , Response):void $next função next do Express-PHP, recebe Request e Response
2223 */
23- public function __invoke (Request $ req , Response $ res , callable $ next ): void
24+ public function __invoke ($ req , Response $ res , callable $ next ): void
2425 {
2526 $ this ->handle ($ req , $ res , $ next );
2627 }
@@ -30,7 +31,7 @@ public function __invoke(Request $req, Response $res, callable $next): void
3031 *
3132 * @param callable(Request, Response):void $next função next do Express-PHP, recebe Request e Response
3233 */
33- public function handle (Request $ req , Response $ res , callable $ next ): void
34+ public function handle (Request | CycleRequest $ req , Response $ res , callable $ next ): void
3435 {
3536 // Use sempre o container PSR-11 para buscar serviços
3637 if (method_exists ($ this ->app , 'getContainer ' )) {
@@ -54,7 +55,13 @@ public function handle(Request $req, Response $res, callable $next): void
5455 $ transactionStarted = true ;
5556 $ this ->logDebug ('Transaction started for route: ' . $ this ->getRouteInfo ($ req ));
5657
57- $ next ($ req , $ res );
58+ // If we have a CycleRequest, pass the original request to the next middleware
59+ // to ensure compatibility with the route handler
60+ if ($ req instanceof CycleRequest) {
61+ $ next ($ req ->getOriginalRequest (), $ res );
62+ } else {
63+ $ next ($ req , $ res );
64+ }
5865
5966 // Commit apenas se há mudanças
6067 if (is_object ($ em ) && method_exists ($ em , 'commitTransaction ' )) {
@@ -78,7 +85,7 @@ public function handle(Request $req, Response $res, callable $next): void
7885 }
7986 }
8087
81- private function getRouteInfo (Request $ req ): string
88+ private function getRouteInfo (Request | CycleRequest $ req ): string
8289 {
8390 $ method = property_exists ($ req , 'method ' )
8491 && (is_string ($ req ->method ) || is_numeric ($ req ->method ))
0 commit comments