DbResource.php 1.1 KB

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