From f5f495ca5b82c25f8bc1411dea5420735a9c2aea Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Wed, 10 Jul 2024 22:03:40 +0200 Subject: [PATCH 1/2] :bug: documentation routes --- src/Documentation/Schemas/OpenAPI.php | 23 ++++++------- src/Documentation/Schemas/Operation.php | 4 +-- src/Documentation/Schemas/Path.php | 46 ++++++++++++++----------- 3 files changed, 39 insertions(+), 34 deletions(-) diff --git a/src/Documentation/Schemas/OpenAPI.php b/src/Documentation/Schemas/OpenAPI.php index 75fb1b7..2593651 100644 --- a/src/Documentation/Schemas/OpenAPI.php +++ b/src/Documentation/Schemas/OpenAPI.php @@ -265,18 +265,17 @@ public function generatePaths() $controller = $route->getController(); if ($controller instanceof Controller) { - $path = match (Str::afterLast($route->getName(), '.')) { - 'details' => (new Path())->generateDetailAndDestroy($controller), - 'search' => (new Path())->generateSearch($controller), - 'mutate' => (new Path())->generateMutate($controller), - 'operate' => (new Path())->generateActions($controller), - 'restore' => (new Path())->generateRestore($controller), - 'forceDelete' => (new Path())->generateForceDelete($controller), - default => null - }; - - if (!is_null($path)) { - $paths['/'.$route->uri()] = $path; + switch ($actionMethod = $route->getActionMethod()) { + case 'mutate': + case 'search': + case 'operate': + case 'restore': + case 'forceDelete': + case 'details': + case 'destroy': + $path = $paths['/'.$route->uri()] ?? new Path; + $paths['/'.$route->uri()] = $path->{'generate'.Str::ucfirst($actionMethod)}($controller); + break; } } } diff --git a/src/Documentation/Schemas/Operation.php b/src/Documentation/Schemas/Operation.php index d72c247..2847519 100644 --- a/src/Documentation/Schemas/Operation.php +++ b/src/Documentation/Schemas/Operation.php @@ -192,7 +192,7 @@ public function generate(): Schema * * @return Operation */ - public function generateDetail(Controller $controller): Operation + public function generateDetails(Controller $controller): Operation { return $controller->generateDocumentationDetailOperation( $this @@ -267,7 +267,7 @@ public function generateMutate(Controller $controller): Operation * * @return Operation */ - public function generateActions(Controller $controller): Operation + public function generateOperate(Controller $controller): Operation { return $controller->generateDocumentationActionsOperation( $this diff --git a/src/Documentation/Schemas/Path.php b/src/Documentation/Schemas/Path.php index b1760e5..c5be11e 100644 --- a/src/Documentation/Schemas/Path.php +++ b/src/Documentation/Schemas/Path.php @@ -380,24 +380,35 @@ public function generate(): Path } /** - * Generates a Path schema with operations for retrieving resource details and performing resource deletion. + * Generates a Path schema with operations for performing resource deletion. * * @param Controller $controller The controller instance used for generating documentation. * * @return Path */ - public function generateDetailAndDestroy(Controller $controller): Path + public function generateDestroy(Controller $controller): Path { return $this - ->withGet( - (new Operation()) - ->generateDetail($controller) - ) ->withDelete( (new Operation()) ->generateDestroy($controller) - ) - ->generate(); + ); + } + + /** + * Generates a Path schema with operations for retrieving resource details. + * + * @param Controller $controller The controller instance used for generating documentation. + * + * @return Path + */ + public function generateDetails(Controller $controller): Path + { + return $this + ->withGet( + (new Operation()) + ->generateDetails($controller) + ); } /** @@ -413,8 +424,7 @@ public function generateSearch(Controller $controller): Path ->withPost( (new Operation()) ->generateSearch($controller) - ) - ->generate(); + ); } /** @@ -430,8 +440,7 @@ public function generateMutate(Controller $controller): Path ->withPost( (new Operation()) ->generateMutate($controller) - ) - ->generate(); + ); } /** @@ -441,12 +450,12 @@ public function generateMutate(Controller $controller): Path * * @return Path */ - public function generateActions(Controller $controller): Path + public function generateOperate(Controller $controller): Path { return $this ->withPost( (new Operation()) - ->generateActions($controller) + ->generateOperate($controller) ) ->withParameters( [ @@ -462,8 +471,7 @@ public function generateActions(Controller $controller): Path ->withRequired() ->generate(), ] - ) - ->generate(); + ); } /** @@ -479,8 +487,7 @@ public function generateRestore(Controller $controller): Path ->withPost( (new Operation()) ->generateRestore($controller) - ) - ->generate(); + ); } /** @@ -496,7 +503,6 @@ public function generateForceDelete(Controller $controller): Path ->withDelete( (new Operation()) ->generateForceDelete($controller) - ) - ->generate(); + ); } } From 7573bf1fb69a82778729712ae4522b5a1594c59e Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Wed, 10 Jul 2024 20:03:51 +0000 Subject: [PATCH 2/2] Apply fixes from StyleCI --- src/Documentation/Schemas/OpenAPI.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Documentation/Schemas/OpenAPI.php b/src/Documentation/Schemas/OpenAPI.php index 2593651..1b27335 100644 --- a/src/Documentation/Schemas/OpenAPI.php +++ b/src/Documentation/Schemas/OpenAPI.php @@ -273,7 +273,7 @@ public function generatePaths() case 'forceDelete': case 'details': case 'destroy': - $path = $paths['/'.$route->uri()] ?? new Path; + $path = $paths['/'.$route->uri()] ?? new Path(); $paths['/'.$route->uri()] = $path->{'generate'.Str::ucfirst($actionMethod)}($controller); break; }