Skip to content

Commit 78e2303

Browse files
committed
Read query log from source package
1 parent 49af29f commit 78e2303

File tree

2 files changed

+6
-50
lines changed

2 files changed

+6
-50
lines changed

composer.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
],
1818
"require": {
1919
"php": "^7.3|^7.4|^8.0",
20-
"spatie/laravel-package-tools": "^1.4.3",
21-
"illuminate/contracts": "^8.37"
20+
"illuminate/contracts": "^8.37",
21+
"kitloong/laravel-app-logger": "^1.0",
22+
"spatie/laravel-package-tools": "^1.4.3"
2223
},
2324
"require-dev": {
2425
"brianium/paratest": "^6.2",

src/LaravelRequestDocsMiddleware.php

Lines changed: 3 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,16 @@
22

33
namespace Rakutentech\LaravelRequestDocs;
44

5-
use Illuminate\Auth\Middleware\Authenticate as Middleware;
6-
use Illuminate\Http\Response;
7-
use Illuminate\Http\JsonResponse;
8-
use Illuminate\Http\Resources\Json\JsonResource;
95
use Closure;
10-
116
use Illuminate\Database\Events\QueryExecuted;
127
use Illuminate\Support\Facades\DB;
8+
use KitLoong\AppLogger\QueryLog\LogWriter as QueryLogger;
139

14-
class LaravelRequestDocsMiddleware extends Middleware
10+
class LaravelRequestDocsMiddleware extends QueryLogger
1511
{
1612
private array $queries = [];
1713

18-
public function handle($request, Closure $next, ...$guards)
14+
public function handle($request, Closure $next)
1915
{
2016
if (!$request->headers->has('X-Request-LRD') || !config('app.debug')) {
2117
return $next($request);
@@ -50,45 +46,4 @@ public function listenDB()
5046
$this->queries[] = $this->getMessages($query);
5147
});
5248
}
53-
54-
protected function getMessages(QueryExecuted $query): array
55-
{
56-
$sql = $query->sql;
57-
58-
foreach ($query->bindings as $key => $binding) {
59-
// https://github.com/barryvdh/laravel-debugbar/blob/master/src/DataCollector/QueryCollector.php#L138
60-
// This regex matches placeholders only, not the question marks,
61-
// nested in quotes, while we iterate through the bindings
62-
// and substitute placeholders by suitable values.
63-
$regex = is_numeric($key)
64-
? "/(?<!\?)\?(?=(?:[^'\\\']*'[^'\\']*')*[^'\\\']*$)(?!\?)/"
65-
: "/:{$key}(?=(?:[^'\\\']*'[^'\\\']*')*[^'\\\']*$)/";
66-
67-
// Mimic bindValue and only string data types
68-
if (is_string($binding)) {
69-
$binding = $this->quote($binding);
70-
}
71-
72-
$sql = preg_replace($regex, $binding, $sql, 1);
73-
}
74-
75-
return [
76-
'time' => $query->time,
77-
'sql' => $sql,
78-
];
79-
}
80-
81-
/**
82-
* Mimic mysql_real_escape_string
83-
*
84-
* @param string $value
85-
* @return string
86-
*/
87-
protected function quote(string $value): string
88-
{
89-
$search = ['\\', "\x00", "\n", "\r", "'", '"', "\x1a"];
90-
$replace = ['\\\\', '\\0', '\\n', '\\r', "\'", '\"', '\\Z'];
91-
92-
return "'".str_replace($search, $replace, $value)."'";
93-
}
9449
}

0 commit comments

Comments
 (0)