|
@@ -4,59 +4,57 @@ namespace Benchmark\Resources;
|
|
|
|
|
|
use Benchmark\Entities\RandomNumber;
|
|
|
use Hamlet\Database\Database;
|
|
|
+use Hamlet\Database\Procedure;
|
|
|
use Hamlet\Http\Entities\JsonEntity;
|
|
|
use Hamlet\Http\Requests\Request;
|
|
|
-use Hamlet\Http\Resources\HttpResource;
|
|
|
use Hamlet\Http\Responses\Response;
|
|
|
use Hamlet\Http\Responses\SimpleOKResponse;
|
|
|
|
|
|
-class UpdateResource implements HttpResource
|
|
|
+class UpdateResource extends DbResource
|
|
|
{
|
|
|
- private $database;
|
|
|
+ /** @var Procedure */
|
|
|
+ private $selectProcedure;
|
|
|
|
|
|
- public function __construct(Database $database)
|
|
|
- {
|
|
|
- $this->database = $database;
|
|
|
- }
|
|
|
+ /** @var Procedure */
|
|
|
+ private $updateProcedure;
|
|
|
|
|
|
- public function getResponse(Request $request): Response
|
|
|
+ public function __construct(Database $database)
|
|
|
{
|
|
|
- $count = $request->parameter('queries');
|
|
|
- if ($count !== null && $count > 0) {
|
|
|
- $count = min($count, 500);
|
|
|
- } else {
|
|
|
- $count = 1;
|
|
|
- }
|
|
|
-
|
|
|
+ parent::__construct($database);
|
|
|
$selectQuery = '
|
|
|
SELECT id,
|
|
|
randomNumber
|
|
|
FROM World
|
|
|
WHERE id = ?
|
|
|
';
|
|
|
- $selectProcedure = $this->database->prepare($selectQuery);
|
|
|
-
|
|
|
+ $this->selectProcedure = $this->database->prepare($selectQuery);
|
|
|
$updateQuery = '
|
|
|
UPDATE World
|
|
|
SET randomNumber = ?
|
|
|
WHERE id = ?
|
|
|
';
|
|
|
- $updateProcedure = $this->database->prepare($updateQuery);
|
|
|
+ $this->updateProcedure = $this->database->prepare($updateQuery);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getResponse(Request $request): Response
|
|
|
+ {
|
|
|
+ $count = $this->getQueriesCount($request);
|
|
|
|
|
|
$payload = [];
|
|
|
while ($count-- > 0) {
|
|
|
$id = mt_rand(1, 10000);
|
|
|
$randomNumber = mt_rand(1, 10000);
|
|
|
|
|
|
- $selectProcedure->bindInteger($id);
|
|
|
+ $this->selectProcedure->bindInteger($id);
|
|
|
/** @var RandomNumber $entry */
|
|
|
- $entry = $selectProcedure->processOne()->selectAll()->cast(RandomNumber::class)->collectHead();
|
|
|
-
|
|
|
+ $entry = $this->selectProcedure->processOne()
|
|
|
+ ->selectAll()->cast(RandomNumber::class)
|
|
|
+ ->collectHead();
|
|
|
$modifiedEntry = $entry->withNumber($randomNumber);
|
|
|
|
|
|
- $updateProcedure->bindInteger($modifiedEntry->number());
|
|
|
- $updateProcedure->bindInteger($modifiedEntry->id());
|
|
|
- $updateProcedure->execute();
|
|
|
+ $this->updateProcedure->bindInteger($modifiedEntry->number());
|
|
|
+ $this->updateProcedure->bindInteger($modifiedEntry->id());
|
|
|
+ $this->updateProcedure->execute();
|
|
|
|
|
|
$payload[] = $modifiedEntry;
|
|
|
}
|