Primo Committ
This commit is contained in:
58
vendor/facade/ignition/src/QueryRecorder/Query.php
vendored
Normal file
58
vendor/facade/ignition/src/QueryRecorder/Query.php
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\Ignition\QueryRecorder;
|
||||
|
||||
use Illuminate\Database\Events\QueryExecuted;
|
||||
|
||||
class Query
|
||||
{
|
||||
/** @var string */
|
||||
protected $sql;
|
||||
|
||||
/** @var float */
|
||||
protected $time;
|
||||
|
||||
/** @var string */
|
||||
protected $connectionName;
|
||||
|
||||
/** @var null|array */
|
||||
protected $bindings;
|
||||
|
||||
/** @var float */
|
||||
protected $microtime;
|
||||
|
||||
public static function fromQueryExecutedEvent(QueryExecuted $queryExecuted, bool $reportBindings = false)
|
||||
{
|
||||
return new static(
|
||||
$queryExecuted->sql,
|
||||
$queryExecuted->time,
|
||||
$queryExecuted->connectionName ?? '',
|
||||
$reportBindings ? $queryExecuted->bindings : null
|
||||
);
|
||||
}
|
||||
|
||||
protected function __construct(
|
||||
string $sql,
|
||||
float $time,
|
||||
string $connectionName,
|
||||
?array $bindings = null,
|
||||
?float $microtime = null
|
||||
) {
|
||||
$this->sql = $sql;
|
||||
$this->time = $time;
|
||||
$this->connectionName = $connectionName;
|
||||
$this->bindings = $bindings;
|
||||
$this->microtime = $microtime ?? microtime(true);
|
||||
}
|
||||
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'sql' => $this->sql,
|
||||
'time' => $this->time,
|
||||
'connection_name' => $this->connectionName,
|
||||
'bindings' => $this->bindings,
|
||||
'microtime' => $this->microtime,
|
||||
];
|
||||
}
|
||||
}
|
||||
87
vendor/facade/ignition/src/QueryRecorder/QueryRecorder.php
vendored
Normal file
87
vendor/facade/ignition/src/QueryRecorder/QueryRecorder.php
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\Ignition\QueryRecorder;
|
||||
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Database\Events\QueryExecuted;
|
||||
|
||||
class QueryRecorder
|
||||
{
|
||||
/** @var \Facade\Ignition\QueryRecorder\Query|[] */
|
||||
protected $queries = [];
|
||||
|
||||
/** @var \Illuminate\Contracts\Foundation\Application */
|
||||
protected $app;
|
||||
|
||||
/** @var bool */
|
||||
private $reportBindings;
|
||||
|
||||
/** @var int|null */
|
||||
private $maxQueries;
|
||||
|
||||
public function __construct(
|
||||
Application $app,
|
||||
bool $reportBindings = true,
|
||||
?int $maxQueries = null
|
||||
) {
|
||||
$this->app = $app;
|
||||
$this->reportBindings = $reportBindings;
|
||||
$this->maxQueries = $maxQueries;
|
||||
}
|
||||
|
||||
public function register()
|
||||
{
|
||||
$this->app['events']->listen(QueryExecuted::class, [$this, 'record']);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function record(QueryExecuted $queryExecuted)
|
||||
{
|
||||
$this->queries[] = Query::fromQueryExecutedEvent($queryExecuted, $this->reportBindings);
|
||||
|
||||
if (is_int($this->maxQueries)) {
|
||||
$this->queries = array_slice($this->queries, -$this->maxQueries);
|
||||
}
|
||||
}
|
||||
|
||||
public function getQueries(): array
|
||||
{
|
||||
$queries = [];
|
||||
|
||||
foreach ($this->queries as $query) {
|
||||
$queries[] = $query->toArray();
|
||||
}
|
||||
|
||||
return $queries;
|
||||
}
|
||||
|
||||
public function reset()
|
||||
{
|
||||
$this->queries = [];
|
||||
}
|
||||
|
||||
public function getReportBindings(): bool
|
||||
{
|
||||
return $this->reportBindings;
|
||||
}
|
||||
|
||||
public function setReportBindings(bool $reportBindings): self
|
||||
{
|
||||
$this->reportBindings = $reportBindings;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getMaxQueries(): ?int
|
||||
{
|
||||
return $this->maxQueries;
|
||||
}
|
||||
|
||||
public function setMaxQueries(?int $maxQueries): self
|
||||
{
|
||||
$this->maxQueries = $maxQueries;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user