From 38d06fce43bdae066dd125e1ba90238875d980b2 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Fri, 17 Apr 2026 11:29:55 +0300 Subject: [PATCH] refactor getNodes into a new NodeController and update refs --- app/Node/NodeController.php | 37 ++++++++++++++++++++ app/Text/TextController.php | 24 ------------- bootstrap/app.php | 4 +-- tests/e2e/Controllers/TextControllerTest.php | 2 +- 4 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 app/Node/NodeController.php diff --git a/app/Node/NodeController.php b/app/Node/NodeController.php new file mode 100644 index 0000000..a02f575 --- /dev/null +++ b/app/Node/NodeController.php @@ -0,0 +1,37 @@ +textRepository->find($textId); + + if ($text === null) { + return $response->withStatus(404); + } + + $nodes = $this->nodeRepository->findByTextId($textId); + + $data = array_map(function ($node) { + return [ + 'id' => $node->getId(), + 'title' => $node->getTitle(), + 'parentNodeId' => $node->getParentNode()?->getId(), + ]; + }, $nodes); + + $response->getBody()->write(json_encode(array_values($data))); + return $response->withHeader('Content-Type', 'application/json'); + } +} diff --git a/app/Text/TextController.php b/app/Text/TextController.php index 8870c3b..c608018 100644 --- a/app/Text/TextController.php +++ b/app/Text/TextController.php @@ -5,7 +5,6 @@ namespace App\Text; use App\Text\TextRepository; use App\Text\UseCases\CreateText; use App\Text\UseCases\CreateTextRequest; -use App\Node\NodeRepository; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; @@ -13,7 +12,6 @@ class TextController { public function __construct( private TextRepository $textRepository, - private NodeRepository $nodeRepository, ) {} public function getTexts(Response $response): Response @@ -46,28 +44,6 @@ class TextController return $response->withHeader('Content-Type', 'application/json'); } - public function getNodes(Response $response, int $textId): Response - { - $text = $this->textRepository->find($textId); - - if ($text === null) { - return $response->withStatus(404); - } - - $nodes = $this->nodeRepository->findByTextId($textId); - - $data = array_map(function ($node) { - return [ - 'id' => $node->getId(), - 'title' => $node->getTitle(), - 'parentNodeId' => $node->getParentNode()?->getId(), - ]; - }, $nodes); - - $response->getBody()->write(json_encode(array_values($data))); - return $response->withHeader('Content-Type', 'application/json'); - } - public function createText( Request $request, Response $response, diff --git a/bootstrap/app.php b/bootstrap/app.php index 1931398..bfe8142 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -5,7 +5,7 @@ use Psr\Http\Message\ServerRequestInterface as Request; use DI\Bridge\Slim\Bridge; use App\View\ViewController; use App\Text\TextController; -use App\Node\NodeRepository; +use App\Node\NodeController; $container = require __DIR__.'/container.php'; $app = Bridge::create($container); @@ -19,7 +19,7 @@ $app->get('/admin/texts/{textId}', [ViewController::class, 'text']); $app->get('/api/texts', [TextController::class, 'getTexts']); $app->get('/api/texts/{textId}', [TextController::class, 'getText']); -$app->get('/api/texts/{textId}/nodes', [TextController::class, 'getNodes']); +$app->get('/api/texts/{textId}/nodes', [NodeController::class, 'getNodes']); $app->post('/api/texts', [TextController::class, 'createText']); return $app; diff --git a/tests/e2e/Controllers/TextControllerTest.php b/tests/e2e/Controllers/TextControllerTest.php index aeee9a9..bcf1e30 100644 --- a/tests/e2e/Controllers/TextControllerTest.php +++ b/tests/e2e/Controllers/TextControllerTest.php @@ -23,7 +23,7 @@ class TextControllerTest extends TestCase $this->textRepo->create(new CreateTextDto( name: 'test text', )); - $this->controller = new TextController($this->textRepo, new FakeNodeRepository); + $this->controller = new TextController($this->textRepo); } public function test_get_one_text(): void