Loading .env +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ APP_SECRET=ea3ebbf899855d483050e0d1aad6a759 # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" DATABASE_URL="postgresql://postgres:12345@127.0.0.1:5433/postgres?serverVersion=16&charset=utf8" DATABASE_URL="postgresql://postgres:12345@postgres/postgres?serverVersion=16&charset=utf8" ###< doctrine/doctrine-bundle ### ###> symfony/messenger ### Loading src/Controller/NewsController.php +8 −10 Original line number Diff line number Diff line Loading @@ -4,8 +4,8 @@ declare(strict_types=1); namespace App\Controller; use App\Exception\NewsNotFoundException; use App\Requests\NewsListRequest; use Exception; use App\Service\NewsService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; Loading @@ -20,11 +20,7 @@ class NewsController extends AbstractController #[Route('/news', name: 'news', methods: ['GET'])] public function news(NewsListRequest $request): Response { $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $newsCategory = $request->getRequest()->query->get('news_category'); $news = $this->newsService->getNews($page, $limit, $newsCategory); return $this->json($news); return $this->json($this->newsService->getNewsByRequest($request)); } #[Route('/news/mainNews', name: 'mainNews', methods: ['GET'])] Loading @@ -45,11 +41,13 @@ class NewsController extends AbstractController public function newsOne(Request $request): Response { try { $newsId = $request->get('newsId');; $news = $this->newsService->getNewsOne($newsId); $news = $this->newsService->getNewsOneByRequest($request); return $this->json($news); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); } catch (NewsNotFoundException $e) { return $this->json([ 'success' => false, 'message' => $e->getMessage(), ], $e->getCode()); } } } src/Controller/RestaurantController.php +13 −51 Original line number Diff line number Diff line Loading @@ -4,18 +4,13 @@ declare(strict_types=1); namespace App\Controller; use App\Exception\RestaurantNotFoundException; use App\Requests\RestaurantListRequest; use Exception; use App\Service\RestaurantService; use Nelmio\ApiDocBundle\Annotation\Model; use OpenApi\Attributes as OA; use OpenApi\Attributes\Schema; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; use App\Model\RestaurantList; use Symfony\Component\Serializer\SerializerInterface; #[Route("/api/v1")] class RestaurantController extends AbstractController Loading @@ -23,58 +18,25 @@ class RestaurantController extends AbstractController public function __construct(private RestaurantService $restaurantService) {} #[Route('/restaurants', name: 'restaurants', methods: ['GET'])] #[OA\Response(response: 200, description: "Листинг ресторанов")] #[OA\Parameter( name: "page", description: "Номер страницы", in: "query", schema: new Schema(type: "integer", default: 1, example: 1) )] #[OA\Parameter( name: "limit", description: "Лимит", in: "query", schema: new Schema(type: "integer", default: 12, example: 12) )] #[OA\Parameter( name: "restaurant_type_id", description: "Идентификатор типа ресторанов", in: "query", schema: new Schema(type: "integer") )] #[OA\Parameter( name: "kitchen_id", description: "Идентификатор кухни", in: "query", schema: new Schema(type: "integer") )] #[Model(type: RestaurantList::class)] public function restaurants(RestaurantListRequest $request): Response { $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $restaurantTypeId = $request->getRequest()->query->get('restaurant_type_id'); $kitchenId = $request->getRequest()->query->get('kitchen_id'); $restaurantsList = $this->restaurantService->getRestaurants( $page, $limit, $restaurantTypeId, $kitchenId ); return $this->json($restaurantsList); return $this->json($this->restaurantService->getRestaurantsByRequest($request)); } #[Route('/restaurants/{restaurantId}', name: 'restaurant', methods: ['GET'])] public function restaurant(Request $request, SerializerInterface $serializer): Response public function restaurant(Request $request): Response { try { $restaurantId = (int)$request->get('restaurantId'); $restaurant = $this->restaurantService->getRestaurant($restaurantId); $json = $serializer->serialize($restaurant, 'json', [ 'circular_reference_handler' => function ($object) { return $object->getId(); } ]); return new Response($json, Response::HTTP_OK, ['Content-Type' => 'application/json']); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); return new Response( $this->restaurantService->getRestaurantByRequest($request), Response::HTTP_OK, ['Content-Type' => 'application/json'] ); } catch (RestaurantNotFoundException $e) { return $this->json([ 'success' => false, 'message' => $e->getMessage(), ], $e->getCode()); } } } src/Entity/Restaurant.php +19 −4 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ class Restaurant /** * @var Collection<Uuid, Kitchen> */ #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant')] #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant', fetch: 'EAGER')] private Collection $kitchen; #[ORM\Column] Loading @@ -75,7 +75,7 @@ class Restaurant /** * @var Collection<Uuid, Tags> */ #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant')] #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant', fetch: 'EAGER')] private Collection $tags; #[ORM\Column(length: 255)] Loading @@ -90,11 +90,11 @@ class Restaurant #[ORM\Column(type: Types::TEXT)] private ?string $howToFind = null; #[ORM\ManyToOne] #[ORM\ManyToOne(fetch: 'EAGER')] #[ORM\JoinColumn(nullable: false)] private ?Seo $seo = null; #[ORM\OneToOne(cascade: ['persist', 'remove'])] #[ORM\OneToOne(cascade: ['persist', 'remove'], fetch: 'EAGER')] #[ORM\JoinColumn(nullable: false)] private ?File $file = null; Loading Loading @@ -405,4 +405,19 @@ class Restaurant return $this; } public function getPhone(): array { return $this->phone; } public function getEmail(): array { return $this->email; } public function getAddress(): array { return $this->address; } } src/Exception/NewsExceptionEnum.php +3 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,9 @@ namespace App\Exception; use Symfony\Component\HttpFoundation\Response; enum NewsExceptionEnum: int { case NotFound = 404; case NotFound = Response::HTTP_NOT_FOUND; } Loading
.env +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ APP_SECRET=ea3ebbf899855d483050e0d1aad6a759 # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" DATABASE_URL="postgresql://postgres:12345@127.0.0.1:5433/postgres?serverVersion=16&charset=utf8" DATABASE_URL="postgresql://postgres:12345@postgres/postgres?serverVersion=16&charset=utf8" ###< doctrine/doctrine-bundle ### ###> symfony/messenger ### Loading
src/Controller/NewsController.php +8 −10 Original line number Diff line number Diff line Loading @@ -4,8 +4,8 @@ declare(strict_types=1); namespace App\Controller; use App\Exception\NewsNotFoundException; use App\Requests\NewsListRequest; use Exception; use App\Service\NewsService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; Loading @@ -20,11 +20,7 @@ class NewsController extends AbstractController #[Route('/news', name: 'news', methods: ['GET'])] public function news(NewsListRequest $request): Response { $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $newsCategory = $request->getRequest()->query->get('news_category'); $news = $this->newsService->getNews($page, $limit, $newsCategory); return $this->json($news); return $this->json($this->newsService->getNewsByRequest($request)); } #[Route('/news/mainNews', name: 'mainNews', methods: ['GET'])] Loading @@ -45,11 +41,13 @@ class NewsController extends AbstractController public function newsOne(Request $request): Response { try { $newsId = $request->get('newsId');; $news = $this->newsService->getNewsOne($newsId); $news = $this->newsService->getNewsOneByRequest($request); return $this->json($news); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); } catch (NewsNotFoundException $e) { return $this->json([ 'success' => false, 'message' => $e->getMessage(), ], $e->getCode()); } } }
src/Controller/RestaurantController.php +13 −51 Original line number Diff line number Diff line Loading @@ -4,18 +4,13 @@ declare(strict_types=1); namespace App\Controller; use App\Exception\RestaurantNotFoundException; use App\Requests\RestaurantListRequest; use Exception; use App\Service\RestaurantService; use Nelmio\ApiDocBundle\Annotation\Model; use OpenApi\Attributes as OA; use OpenApi\Attributes\Schema; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; use App\Model\RestaurantList; use Symfony\Component\Serializer\SerializerInterface; #[Route("/api/v1")] class RestaurantController extends AbstractController Loading @@ -23,58 +18,25 @@ class RestaurantController extends AbstractController public function __construct(private RestaurantService $restaurantService) {} #[Route('/restaurants', name: 'restaurants', methods: ['GET'])] #[OA\Response(response: 200, description: "Листинг ресторанов")] #[OA\Parameter( name: "page", description: "Номер страницы", in: "query", schema: new Schema(type: "integer", default: 1, example: 1) )] #[OA\Parameter( name: "limit", description: "Лимит", in: "query", schema: new Schema(type: "integer", default: 12, example: 12) )] #[OA\Parameter( name: "restaurant_type_id", description: "Идентификатор типа ресторанов", in: "query", schema: new Schema(type: "integer") )] #[OA\Parameter( name: "kitchen_id", description: "Идентификатор кухни", in: "query", schema: new Schema(type: "integer") )] #[Model(type: RestaurantList::class)] public function restaurants(RestaurantListRequest $request): Response { $page = $request->getRequest()->query->get('page'); $limit = $request->getRequest()->query->get('limit'); $restaurantTypeId = $request->getRequest()->query->get('restaurant_type_id'); $kitchenId = $request->getRequest()->query->get('kitchen_id'); $restaurantsList = $this->restaurantService->getRestaurants( $page, $limit, $restaurantTypeId, $kitchenId ); return $this->json($restaurantsList); return $this->json($this->restaurantService->getRestaurantsByRequest($request)); } #[Route('/restaurants/{restaurantId}', name: 'restaurant', methods: ['GET'])] public function restaurant(Request $request, SerializerInterface $serializer): Response public function restaurant(Request $request): Response { try { $restaurantId = (int)$request->get('restaurantId'); $restaurant = $this->restaurantService->getRestaurant($restaurantId); $json = $serializer->serialize($restaurant, 'json', [ 'circular_reference_handler' => function ($object) { return $object->getId(); } ]); return new Response($json, Response::HTTP_OK, ['Content-Type' => 'application/json']); } catch (Exception $e) { return new Response($e->getMessage(), $e->getCode()); return new Response( $this->restaurantService->getRestaurantByRequest($request), Response::HTTP_OK, ['Content-Type' => 'application/json'] ); } catch (RestaurantNotFoundException $e) { return $this->json([ 'success' => false, 'message' => $e->getMessage(), ], $e->getCode()); } } }
src/Entity/Restaurant.php +19 −4 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ class Restaurant /** * @var Collection<Uuid, Kitchen> */ #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant')] #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant', fetch: 'EAGER')] private Collection $kitchen; #[ORM\Column] Loading @@ -75,7 +75,7 @@ class Restaurant /** * @var Collection<Uuid, Tags> */ #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant')] #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant', fetch: 'EAGER')] private Collection $tags; #[ORM\Column(length: 255)] Loading @@ -90,11 +90,11 @@ class Restaurant #[ORM\Column(type: Types::TEXT)] private ?string $howToFind = null; #[ORM\ManyToOne] #[ORM\ManyToOne(fetch: 'EAGER')] #[ORM\JoinColumn(nullable: false)] private ?Seo $seo = null; #[ORM\OneToOne(cascade: ['persist', 'remove'])] #[ORM\OneToOne(cascade: ['persist', 'remove'], fetch: 'EAGER')] #[ORM\JoinColumn(nullable: false)] private ?File $file = null; Loading Loading @@ -405,4 +405,19 @@ class Restaurant return $this; } public function getPhone(): array { return $this->phone; } public function getEmail(): array { return $this->email; } public function getAddress(): array { return $this->address; } }
src/Exception/NewsExceptionEnum.php +3 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,9 @@ namespace App\Exception; use Symfony\Component\HttpFoundation\Response; enum NewsExceptionEnum: int { case NotFound = 404; case NotFound = Response::HTTP_NOT_FOUND; }