diff --git a/.gitignore b/.gitignore index 13ff59d..0658310 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ # Embedded web-server pid file /.web-server-pid +.idea diff --git a/src/Controller/PostController.php b/src/Controller/PostController.php index 9ca4c76..898fcec 100644 --- a/src/Controller/PostController.php +++ b/src/Controller/PostController.php @@ -1,17 +1,63 @@ +em = $em; + $this->serializer = $serializer; + } + + #[Route('/post/{id}', name: 'display post', methods: ['GET'])] + public function getPost(int $id): Response + { + $post = $this->em->getRepository(Post::class)->find($id); + + if(!$post) { + # Error 404 page + } + + # Return twig + return new Response(); + } + + #[Route('/post/', name: 'add_post', methods: ['POST'])] + public function addPost(Request $request) :Response + { + $data = json_decode($request->getContent(), true); + + try { + $post = $this->serializer->deserialize($data, Post::class, 'json'); + } catch (\Exception) { + return new Response("Invalid JSON data", Response::HTTP_BAD_REQUEST); + } + + # Handle error on data + $this->em->persist($post); + $this->em->flush(); + + return new Response(); + } -class PostController -{ - #[Route('/lucky/number/{max}', name: 'app_lucky_number')] - public function number(int $max): Response + #[Route('/post/{id}', name: 'remove_post', methods: ['DELETE'])] + public function removePost(int $id) :Response { - $number = random_int(0, $max); + $postRef = $this->em->getReference('Post', $id); + $this->em->remove($postRef); + $this->em->flush(); - return new Response( - 'Lucky number: '.$number.'' - ); - } + return new Response(); + } }