DbResource.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace Benchmark\Resources;
  3. use Hamlet\Database\Database;
  4. use Hamlet\Entities\JsonEntity;
  5. use Hamlet\Requests\Request;
  6. use Hamlet\Resources\WebResource;
  7. use Hamlet\Responses\Response;
  8. use Hamlet\Responses\SimpleOKResponse;
  9. class DbResource implements WebResource
  10. {
  11. private $database;
  12. public function __construct(Database $database)
  13. {
  14. $this->database = $database;
  15. }
  16. public function getResponse(Request $request): Response
  17. {
  18. $queryParams = $request->getQueryParams();
  19. $count = $queryParams['queries'] ?? null;
  20. if ($count !== null && $count > 0) {
  21. $count = min($count, 500);
  22. } else {
  23. $count = 1;
  24. }
  25. $query = '
  26. SELECT id,
  27. randomNumber
  28. FROM World
  29. WHERE id = ?
  30. ';
  31. $procedure = $this->database->prepare($query);
  32. $payload = [];
  33. while ($count-- > 0) {
  34. $id = mt_rand(1, 10000);
  35. $procedure->bindInteger($id);
  36. $payload[] = $procedure->fetchOne();
  37. }
  38. if (!isset($queryParams['queries'])) {
  39. $payload = $payload[0];
  40. }
  41. return new SimpleOKResponse(new JsonEntity($payload));
  42. }
  43. }