QueriesResource.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace Benchmark\Resources;
  3. use Benchmark\Entities\RandomNumber;
  4. use Hamlet\Database\Session;
  5. use Hamlet\Http\Entities\JsonEntity;
  6. use Hamlet\Http\Requests\Request;
  7. use Hamlet\Http\Resources\HttpResource;
  8. use Hamlet\Http\Responses\{Response, SimpleOKResponse};
  9. class QueriesResource extends DbResource
  10. {
  11. use QueriesCountTrait;
  12. public function getResponse(Request $request): Response
  13. {
  14. $count = $this->getQueriesCount($request);
  15. $callables = [];
  16. while ($count--) {
  17. $callables[] = function (Session $session) {
  18. $id = mt_rand(1, 10000);
  19. $procedure = $session->prepare('
  20. SELECT id,
  21. randomNumber
  22. FROM World
  23. WHERE id = ?
  24. ');
  25. $procedure->bindInteger($id);
  26. return $procedure->processOne()
  27. ->selectAll()->cast(RandomNumber::class)
  28. ->collectHead();
  29. };
  30. }
  31. $payload = $this->database->withSessions($callables);
  32. return new SimpleOKResponse(new JsonEntity($payload));
  33. }
  34. }