DbResource.php 954 B

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace Benchmark\Resources;
  3. use Benchmark\Entities\RandomNumber;
  4. use Hamlet\Database\{Procedure, 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 DbResource implements HttpResource
  10. {
  11. /** @var Procedure */
  12. private $procedure;
  13. public function __construct(Session $session)
  14. {
  15. $this->procedure = $session->prepare('
  16. SELECT id,
  17. randomNumber
  18. FROM World
  19. WHERE id = ?
  20. ');
  21. }
  22. public function getResponse(Request $request): Response
  23. {
  24. $id = mt_rand(1, 10000);
  25. $this->procedure->bindInteger($id);
  26. $record = $this->procedure->processOne()
  27. ->selectAll()->cast(RandomNumber::class)
  28. ->collectHead();
  29. return new SimpleOKResponse(new JsonEntity($record));
  30. }
  31. }