DbController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\WorldRepository;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. class DbController
  9. {
  10. /** @var EntityManagerInterface */
  11. private $entityManager;
  12. /** @var WorldRepository */
  13. private $worldRepository;
  14. public function __construct(EntityManagerInterface $entityManager, WorldRepository $worldRepository)
  15. {
  16. $this->entityManager = $entityManager;
  17. $this->worldRepository = $worldRepository;
  18. }
  19. /**
  20. * @Route("/db")
  21. */
  22. public function db(): JsonResponse
  23. {
  24. $world = $this->worldRepository->find(mt_rand(1, 10000));
  25. return new JsonResponse($world);
  26. }
  27. /**
  28. * @Route("/queries")
  29. */
  30. public function queries(Request $request): JsonResponse
  31. {
  32. $queries = (int) $request->query->get('queries', 1);
  33. $queries = min(max($queries, 1), 500);
  34. // possibility for enhancement is the use of SplFixedArray -> http://php.net/manual/de/class.splfixedarray.php
  35. $worlds = [];
  36. for ($i = 0; $i < $queries; ++$i) {
  37. $worlds[] = $this->worldRepository->find(mt_rand(1, 10000));
  38. }
  39. return new JsonResponse($worlds);
  40. }
  41. /**
  42. * @Route("/updates")
  43. */
  44. public function update(Request $request): JsonResponse
  45. {
  46. $queries = (int) $request->query->get('queries', 1);
  47. $queries = min(500, max(1, $queries));
  48. $worlds = [];
  49. for ($i = 0; $i < $queries; ++$i) {
  50. $world = $this->worldRepository->find(mt_rand(1, 10000));
  51. if ($world) {
  52. $randomNumber = mt_rand(1, 10000);
  53. $world->setRandomNumber($randomNumber);
  54. $worlds[] = $world;
  55. }
  56. }
  57. $this->entityManager->flush();
  58. return new JsonResponse($worlds);
  59. }
  60. }