TaskSchema module

This commit is contained in:
Marek Lenczewski
2026-04-12 15:42:48 +02:00
parent 4e81cea831
commit 5198769de4
57 changed files with 3066 additions and 324 deletions

View File

@@ -45,14 +45,6 @@ class TaskController extends AbstractController
return $this->json($task, 200, [], ['groups' => ['task:read']]);
}
#[Route('', methods: ['POST'])]
public function create(#[Payload] TaskRequest $dto): JsonResponse
{
$task = $this->manager->create($dto);
return $this->json($task, 201, [], ['groups' => ['task:read']]);
}
#[Route('/{id}', methods: ['PUT'], requirements: ['id' => '\d+'])]
public function update(Task $task, #[Payload] TaskRequest $dto): JsonResponse
{

View File

@@ -0,0 +1,60 @@
<?php
namespace App\Controller\Api;
use App\DTO\TaskSchemaRequest;
use App\Entity\TaskSchema;
use App\Repository\TaskSchemaRepository;
use App\Service\TaskSchemaManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Attribute\MapRequestPayload as Payload;
use Symfony\Component\Routing\Attribute\Route;
#[Route('/api/task-schemas')]
class TaskSchemaController extends AbstractController
{
public function __construct(
private readonly TaskSchemaRepository $repo,
private readonly TaskSchemaManager $manager,
) {
}
#[Route('', methods: ['GET'])]
public function index(): JsonResponse
{
$schemas = $this->repo->allSchemas();
return $this->json($schemas, 200, [], ['groups' => ['task_schema:read']]);
}
#[Route('/{id}', methods: ['GET'], requirements: ['id' => '\d+'])]
public function show(TaskSchema $schema): JsonResponse
{
return $this->json($schema, 200, [], ['groups' => ['task_schema:read']]);
}
#[Route('', methods: ['POST'])]
public function create(#[Payload] TaskSchemaRequest $dto): JsonResponse
{
$this->manager->create($dto);
return new JsonResponse(null, 201);
}
#[Route('/{id}', methods: ['PUT'], requirements: ['id' => '\d+'])]
public function update(TaskSchema $schema, #[Payload] TaskSchemaRequest $dto): JsonResponse
{
$this->manager->update($schema, $dto);
return $this->json($schema, 200, [], ['groups' => ['task_schema:read']]);
}
#[Route('/{id}', methods: ['DELETE'], requirements: ['id' => '\d+'])]
public function delete(TaskSchema $schema): JsonResponse
{
$this->manager->delete($schema);
return new JsonResponse(null, 204);
}
}