declare(strict_types=1); namespace App\Controller; use ; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Serializer\SerializerInterface; /** * Auto-generated CRUD controller for the bridge resource. * Edit freely — re-running make:bridge:resource won't overwrite this file. */ #[Route('')] final class Controller { public function __construct( private readonly EntityManagerInterface $em, private readonly SerializerInterface $serializer, ) { } #[Route('', name: '_list', methods: ['GET'])] public function list(): JsonResponse { $items = $this->em->getRepository(::class)->findAll(); return new JsonResponse($this->serializer->normalize($items, 'json')); } #[Route('', name: '_create', methods: ['POST'])] public function create(Request $request): JsonResponse { $data = json_decode((string) $request->getContent(), true) ?? []; $entity = new (); if (isset($data['title'])) { $entity->setTitle((string) $data['title']); } if (isset($data['done'])) { $entity->setDone((bool) $data['done']); } $this->em->persist($entity); $this->em->flush(); return new JsonResponse( $this->serializer->normalize($entity, 'json'), Response::HTTP_CREATED, ); } #[Route('/{id}', name: '_update', methods: ['PATCH'])] public function update(string $id, Request $request): JsonResponse { $entity = $this->em->getRepository(::class)->find($id); if (null === $entity) { return new JsonResponse( ['title' => 'Not Found', 'status' => 404], Response::HTTP_NOT_FOUND, ['Content-Type' => 'application/problem+json'], ); } $data = json_decode((string) $request->getContent(), true) ?? []; if (isset($data['title'])) { $entity->setTitle((string) $data['title']); } if (isset($data['done'])) { $entity->setDone((bool) $data['done']); } $this->em->flush(); return new JsonResponse($this->serializer->normalize($entity, 'json')); } #[Route('/{id}', name: '_delete', methods: ['DELETE'])] public function delete(string $id): JsonResponse { $entity = $this->em->getRepository(::class)->find($id); if (null === $entity) { return new JsonResponse(null, Response::HTTP_NO_CONTENT); } $this->em->remove($entity); $this->em->flush(); return new JsonResponse(null, Response::HTTP_NO_CONTENT); } }