From 618c6e717523c6a7e55552b71252b7372c728479 Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Wed, 19 Jun 2024 19:41:35 +0200
Subject: [PATCH 01/12] Add migration, support for parameters, add truncate
command
---
.gitignore | 1 +
config/route-statistics.php | 10 ++++
database/factories/RouteStatisticFactory.php | 1 +
...ameters_to_route_statistics_table.php.stub | 22 +++++++++
src/Commands/LaravelRouteTruncateCommand.php | 28 +++++++++++
src/LaravelRouteStatisticsServiceProvider.php | 3 ++
src/Models/RouteStatistic.php | 1 +
tests/TestCase.php | 14 +++++-
tests/Unit/RouteStatisticModelTest.php | 49 +++++++++++++++++++
9 files changed, 127 insertions(+), 2 deletions(-)
create mode 100644 database/migrations/add_parameters_to_route_statistics_table.php.stub
create mode 100644 src/Commands/LaravelRouteTruncateCommand.php
diff --git a/.gitignore b/.gitignore
index 0ba21f1..21dabd5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
.php_cs
.php_cs.cache
.phpunit.result.cache
+.phpunit.cache
build
composer.lock
coverage
diff --git a/config/route-statistics.php b/config/route-statistics.php
index 6c7d5d3..b03b860 100644
--- a/config/route-statistics.php
+++ b/config/route-statistics.php
@@ -12,6 +12,16 @@
*/
'enabled' => env('ROUTE_STATISTICS_ENABLED', true),
+ /*
+ |--------------------------------------------------------------------------
+ | Store parameters
+ |--------------------------------------------------------------------------
+ |
+ | If this setting is set to true the route parameters will also be logged.
+ |
+ */
+ 'store_parameters' => env('ROUTE_STORE_PARAMETERS', false),
+
/*
|--------------------------------------------------------------------------
| Aggregation
diff --git a/database/factories/RouteStatisticFactory.php b/database/factories/RouteStatisticFactory.php
index e64e413..68c54f0 100644
--- a/database/factories/RouteStatisticFactory.php
+++ b/database/factories/RouteStatisticFactory.php
@@ -15,6 +15,7 @@ public function definition()
'method' => $this->faker->randomElement(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']),
'route' => $this->faker->domainWord().'.'.$this->faker->randomElement(['index', 'create', 'store', 'show', 'edit', 'update', 'destroy']),
'status' => $this->faker->randomElement([200, 201, 202, 204, 300, 301, 302, 303, 304, 400, 401, 402, 403, 404, 405, 406, 422, 429, 500, 501, 502, 503, 504]),
+ 'parameters' => $this->faker->json(),
'ip' => $this->faker->ipv4(),
'date' => $this->faker->dateTime(),
'counter' => $this->faker->randomNumber(4),
diff --git a/database/migrations/add_parameters_to_route_statistics_table.php.stub b/database/migrations/add_parameters_to_route_statistics_table.php.stub
new file mode 100644
index 0000000..5879ad9
--- /dev/null
+++ b/database/migrations/add_parameters_to_route_statistics_table.php.stub
@@ -0,0 +1,22 @@
+json('parameters')->after('route')->nullable();
+ });
+ }
+
+ public function down()
+ {
+ Schema::table('route_statistics', function (Blueprint $table) {
+ $table->dropColumn('parameters');
+ });
+ }
+};
diff --git a/src/Commands/LaravelRouteTruncateCommand.php b/src/Commands/LaravelRouteTruncateCommand.php
new file mode 100644
index 0000000..6f180f5
--- /dev/null
+++ b/src/Commands/LaravelRouteTruncateCommand.php
@@ -0,0 +1,28 @@
+components->error('Failed to truncate route usage statistics: '.$ex->getMessage());
+ }
+
+ $this->components->info('Route usage statistics truncated');
+
+ return Command::SUCCESS;
+ }
+}
diff --git a/src/LaravelRouteStatisticsServiceProvider.php b/src/LaravelRouteStatisticsServiceProvider.php
index e74dc1f..353c3c4 100644
--- a/src/LaravelRouteStatisticsServiceProvider.php
+++ b/src/LaravelRouteStatisticsServiceProvider.php
@@ -2,6 +2,7 @@
namespace Bilfeldt\LaravelRouteStatistics;
+use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteTruncateCommand;
use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteStatisticsCommand;
use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteUnusedCommand;
use Bilfeldt\LaravelRouteStatistics\Http\Middleware\RouteStatisticsMiddleware;
@@ -60,6 +61,7 @@ private function publishMigrations()
{
$this->publishes([
__DIR__.'/../database/migrations/create_route_statistics_table.php.stub' => database_path('migrations/'.date('Y_m_d_His', time()).'_create_route_statistics_table.php'),
+ __DIR__.'/../database/migrations/add_parameters_to_route_statistics_table.php.stub' => database_path('migrations/'.date('Y_m_d_His', time()).'_add_parameters_to_route_statistics_table.php'),
// you can add any number of migrations here
], 'migrations');
}
@@ -69,6 +71,7 @@ private function bootCommands()
if ($this->app->runningInConsole()) {
$this->commands([
LaravelRouteStatisticsCommand::class,
+ LaravelRouteTruncateCommand::class,
LaravelRouteUnusedCommand::class,
]);
}
diff --git a/src/Models/RouteStatistic.php b/src/Models/RouteStatistic.php
index 632bc05..3c949ae 100644
--- a/src/Models/RouteStatistic.php
+++ b/src/Models/RouteStatistic.php
@@ -85,6 +85,7 @@ public function getLogAttributes(Request $request, $response, ?int $time = null,
'team_id' => $this->getRequestTeam($request)?->getKey(),
'method' => $request->getMethod(),
'route' => $request->route()?->getName() ?? $request->route()?->uri(),
+ 'parameters' => config('route-statistics.store_parameters') ? json_encode($request->route()->originalParameters()) : null,
'status' => $response->getStatusCode(),
'ip' => $request->ip(),
'date' => $this->getDate(),
diff --git a/tests/TestCase.php b/tests/TestCase.php
index cd04265..317fb39 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -35,7 +35,17 @@ public function getEnvironmentSetUp($app)
'prefix' => '',
]);
- $migration = include __DIR__.'/../database/migrations/create_route_statistics_table.php.stub';
- $migration->up();
+ $this->runMigrations([
+ 'create_route_statistics_table',
+ 'add_parameters_to_route_statistics_table',
+ ]);
+ }
+
+ private function runMigrations(array $fileNames): void
+ {
+ foreach ($fileNames as $fileName) {
+ $class = require __DIR__.'/../database/migrations/'.$fileName.'.php.stub';
+ ($class)->up();
+ }
}
}
diff --git a/tests/Unit/RouteStatisticModelTest.php b/tests/Unit/RouteStatisticModelTest.php
index 2af737b..de53512 100644
--- a/tests/Unit/RouteStatisticModelTest.php
+++ b/tests/Unit/RouteStatisticModelTest.php
@@ -5,6 +5,7 @@
use Bilfeldt\LaravelRouteStatistics\Jobs\CreateLog;
use Bilfeldt\LaravelRouteStatistics\Models\RouteStatistic;
use Bilfeldt\LaravelRouteStatistics\Tests\TestCase;
+use Illuminate\Routing\Route;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Queue;
@@ -46,4 +47,52 @@ public function test_get_log_attributes(): void
{
$this->markTestIncomplete('Mock the request and response to ensture the correct attributes are returned');
}
+
+ public function test_logs_parameters_if_config_enabled(): void
+ {
+ Config::set('route-statistics.store_parameters', true);
+
+ $route = 'home';
+ $params = [
+ 'param1' => 'one',
+ 'param2' => 'two',
+ ];
+ $request = \Illuminate\Http\Request::create($route.'/'.join('/', $this->get_route_parameters($params)), 'GET');
+ $this->app['router']->get($route.'/'.join('/', $this->get_route_keys($params)), fn () => 'Test route response');
+ $response = $this->app['router']->dispatch($request);
+
+ (new RouteStatistic)->log($request, $response, 1, 2);
+
+ $log = RouteStatistic::first();
+ $this->assertEquals(json_encode($params), $log->parameters);
+ }
+
+ public function test_logs_parameters_if_config_disabled(): void
+ {
+ Config::set('route-statistics.store_parameters', false);
+
+ $route = 'home';
+ $params = [
+ 'param1' => 'one',
+ 'param2' => 'two',
+ ];
+ $request = \Illuminate\Http\Request::create($route.'/'.join('/', $this->get_route_parameters($params)), 'GET');
+ $this->app['router']->get($route.'/'.join('/', $this->get_route_keys($params)), fn () => 'Test route response');
+ $response = $this->app['router']->dispatch($request);
+
+ (new RouteStatistic)->log($request, $response, 1, 2);
+
+ $log = RouteStatistic::first();
+ $this->assertNull($log->parameters);
+ }
+
+ private function get_route_parameters(array $parameters): array
+ {
+ return array_values($parameters);
+ }
+
+ private function get_route_keys(array $parameters): array
+ {
+ return array_map(fn($parameter) => '{'.$parameter.'}', array_keys($parameters));
+ }
}
From dbb4fa64be7065c60ac313040ba7bfaa957976e3 Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Wed, 19 Jun 2024 19:44:52 +0200
Subject: [PATCH 02/12] Fix styling errors
---
src/Commands/LaravelRouteTruncateCommand.php | 4 +---
src/Http/Middleware/RouteStatisticsMiddleware.php | 1 -
src/LaravelRouteStatisticsServiceProvider.php | 2 +-
tests/TestCase.php | 2 +-
tests/Unit/RouteStatisticModelTest.php | 11 +++++------
5 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/src/Commands/LaravelRouteTruncateCommand.php b/src/Commands/LaravelRouteTruncateCommand.php
index 6f180f5..e75b871 100644
--- a/src/Commands/LaravelRouteTruncateCommand.php
+++ b/src/Commands/LaravelRouteTruncateCommand.php
@@ -2,7 +2,6 @@
namespace Bilfeldt\LaravelRouteStatistics\Commands;
-use Exception;
use Illuminate\Console\Command;
use TypeError;
@@ -16,8 +15,7 @@ public function handle(): int
{
try {
call_user_func_array([config('route-statistics.model'), 'truncate'], []);
- }
- catch(TypeError $ex) {
+ } catch (TypeError $ex) {
$this->components->error('Failed to truncate route usage statistics: '.$ex->getMessage());
}
diff --git a/src/Http/Middleware/RouteStatisticsMiddleware.php b/src/Http/Middleware/RouteStatisticsMiddleware.php
index 63101a7..8aed5fd 100644
--- a/src/Http/Middleware/RouteStatisticsMiddleware.php
+++ b/src/Http/Middleware/RouteStatisticsMiddleware.php
@@ -12,7 +12,6 @@ class RouteStatisticsMiddleware
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
- * @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
diff --git a/src/LaravelRouteStatisticsServiceProvider.php b/src/LaravelRouteStatisticsServiceProvider.php
index 353c3c4..c4d46b3 100644
--- a/src/LaravelRouteStatisticsServiceProvider.php
+++ b/src/LaravelRouteStatisticsServiceProvider.php
@@ -2,8 +2,8 @@
namespace Bilfeldt\LaravelRouteStatistics;
-use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteTruncateCommand;
use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteStatisticsCommand;
+use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteTruncateCommand;
use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteUnusedCommand;
use Bilfeldt\LaravelRouteStatistics\Http\Middleware\RouteStatisticsMiddleware;
use Bilfeldt\RequestLogger\RequestLoggerFacade;
diff --git a/tests/TestCase.php b/tests/TestCase.php
index 317fb39..593fb1f 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -45,7 +45,7 @@ private function runMigrations(array $fileNames): void
{
foreach ($fileNames as $fileName) {
$class = require __DIR__.'/../database/migrations/'.$fileName.'.php.stub';
- ($class)->up();
+ $class->up();
}
}
}
diff --git a/tests/Unit/RouteStatisticModelTest.php b/tests/Unit/RouteStatisticModelTest.php
index de53512..221a830 100644
--- a/tests/Unit/RouteStatisticModelTest.php
+++ b/tests/Unit/RouteStatisticModelTest.php
@@ -5,7 +5,6 @@
use Bilfeldt\LaravelRouteStatistics\Jobs\CreateLog;
use Bilfeldt\LaravelRouteStatistics\Models\RouteStatistic;
use Bilfeldt\LaravelRouteStatistics\Tests\TestCase;
-use Illuminate\Routing\Route;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Queue;
@@ -57,8 +56,8 @@ public function test_logs_parameters_if_config_enabled(): void
'param1' => 'one',
'param2' => 'two',
];
- $request = \Illuminate\Http\Request::create($route.'/'.join('/', $this->get_route_parameters($params)), 'GET');
- $this->app['router']->get($route.'/'.join('/', $this->get_route_keys($params)), fn () => 'Test route response');
+ $request = \Illuminate\Http\Request::create($route.'/'.implode('/', $this->get_route_parameters($params)), 'GET');
+ $this->app['router']->get($route.'/'.implode('/', $this->get_route_keys($params)), fn () => 'Test route response');
$response = $this->app['router']->dispatch($request);
(new RouteStatistic)->log($request, $response, 1, 2);
@@ -76,8 +75,8 @@ public function test_logs_parameters_if_config_disabled(): void
'param1' => 'one',
'param2' => 'two',
];
- $request = \Illuminate\Http\Request::create($route.'/'.join('/', $this->get_route_parameters($params)), 'GET');
- $this->app['router']->get($route.'/'.join('/', $this->get_route_keys($params)), fn () => 'Test route response');
+ $request = \Illuminate\Http\Request::create($route.'/'.implode('/', $this->get_route_parameters($params)), 'GET');
+ $this->app['router']->get($route.'/'.implode('/', $this->get_route_keys($params)), fn () => 'Test route response');
$response = $this->app['router']->dispatch($request);
(new RouteStatistic)->log($request, $response, 1, 2);
@@ -93,6 +92,6 @@ private function get_route_parameters(array $parameters): array
private function get_route_keys(array $parameters): array
{
- return array_map(fn($parameter) => '{'.$parameter.'}', array_keys($parameters));
+ return array_map(fn ($parameter) => '{'.$parameter.'}', array_keys($parameters));
}
}
From b63659123dc0d67817009b8c51a39d26e3f8e51e Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Wed, 19 Jun 2024 19:46:49 +0200
Subject: [PATCH 03/12] Add parameters to README file
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 5e2ca41..c3d6d12 100644
--- a/README.md
+++ b/README.md
@@ -147,6 +147,7 @@ This package works as follows:
- `team_id`: The team id associated with the request (if available)
- `method`: The HTTP method (`GET/POST/...`)
- `route`: The route name (if available) or the route URI (eg `/posts/{post}`)
+ - `parameters`: The route parameters passed (if enabled else `null`)
- `status`: The HTTP status (eg `202`)
- `ip`: The request ip
- `date`: The date of the request as datetime (can be aggregated)
From 488695888255d8b6a809dc682d2c98d4e6e77714 Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Fri, 21 Jun 2024 11:17:46 +0200
Subject: [PATCH 04/12] Fix missing parameters entry in console stats command
---
src/Commands/LaravelRouteStatisticsCommand.php | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/Commands/LaravelRouteStatisticsCommand.php b/src/Commands/LaravelRouteStatisticsCommand.php
index c3738ff..548f64d 100644
--- a/src/Commands/LaravelRouteStatisticsCommand.php
+++ b/src/Commands/LaravelRouteStatisticsCommand.php
@@ -29,11 +29,14 @@ class LaravelRouteStatisticsCommand extends Command
public function handle()
{
$query = $this->getQuery();
+ $fields = $this->getFields();
if ($this->option('group')) {
$query->select($this->option('group'))
->addSelect(DB::raw('MAX(date) as last_used'))
->addSelect(DB::raw('SUM(counter) as counter'));
+ } else {
+ $query->select($fields);
}
$this->applyFilters($query);
@@ -43,7 +46,7 @@ public function handle()
$results = $query->limit($this->option('limit'))->get();
$this->table(
- $this->getFields(),
+ $fields,
$results->toArray()
);
@@ -111,16 +114,17 @@ protected function getFields(): array
return array_merge($this->option('group'), ['last_used', 'counter']);
}
- return [
+ return array_filter([
'id',
'user_id',
'team_id',
'method',
'route',
'status',
+ config('route-statistics.store_parameters') === true ? 'parameters' : null,
'ip',
'date',
'counter',
- ];
+ ]);
}
}
From bf93e209d2c737e98d4a0b3286f76ce1f45b65e5 Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Sat, 22 Jun 2024 00:49:06 +0200
Subject: [PATCH 05/12] Return phpdoc comment, use array casting, select
columns by function
---
.../LaravelRouteStatisticsCommand.php | 25 +++++++++++++++----
.../Middleware/RouteStatisticsMiddleware.php | 1 +
src/Models/RouteStatistic.php | 1 +
3 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/Commands/LaravelRouteStatisticsCommand.php b/src/Commands/LaravelRouteStatisticsCommand.php
index 548f64d..5913e53 100644
--- a/src/Commands/LaravelRouteStatisticsCommand.php
+++ b/src/Commands/LaravelRouteStatisticsCommand.php
@@ -2,6 +2,7 @@
namespace Bilfeldt\LaravelRouteStatistics\Commands;
+use Bilfeldt\LaravelRouteStatistics\Models\RouteStatistic;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
@@ -29,25 +30,34 @@ class LaravelRouteStatisticsCommand extends Command
public function handle()
{
$query = $this->getQuery();
- $fields = $this->getFields();
if ($this->option('group')) {
$query->select($this->option('group'))
->addSelect(DB::raw('MAX(date) as last_used'))
->addSelect(DB::raw('SUM(counter) as counter'));
} else {
- $query->select($fields);
+ $query->select($this->getColumns());
}
$this->applyFilters($query);
$this->applyGrouping($query);
$this->applySorting($query);
- $results = $query->limit($this->option('limit'))->get();
+ $results = $query
+ ->limit($this->option('limit'))
+ ->get()
+ ->map(function (RouteStatistic $item) {
+ $data = $item->toArray();
+ if (array_key_exists('parameters', $data)) {
+ $data['parameters'] = json_encode($data['parameters']);
+ }
+
+ return $data;
+ });
$this->table(
- $fields,
- $results->toArray()
+ $this->getFields(),
+ $results
);
return Command::SUCCESS;
@@ -114,6 +124,11 @@ protected function getFields(): array
return array_merge($this->option('group'), ['last_used', 'counter']);
}
+ return $this->getColumns();
+ }
+
+ protected function getColumns()
+ {
return array_filter([
'id',
'user_id',
diff --git a/src/Http/Middleware/RouteStatisticsMiddleware.php b/src/Http/Middleware/RouteStatisticsMiddleware.php
index 8aed5fd..63101a7 100644
--- a/src/Http/Middleware/RouteStatisticsMiddleware.php
+++ b/src/Http/Middleware/RouteStatisticsMiddleware.php
@@ -12,6 +12,7 @@ class RouteStatisticsMiddleware
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
+ * @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
diff --git a/src/Models/RouteStatistic.php b/src/Models/RouteStatistic.php
index 3c949ae..a594336 100644
--- a/src/Models/RouteStatistic.php
+++ b/src/Models/RouteStatistic.php
@@ -23,6 +23,7 @@ class RouteStatistic extends Model implements RequestLoggerInterface
protected $casts = [
'date' => 'datetime',
+ 'parameters' => 'array',
];
//======================================================================
From 8923ec679ab0a6ce6f5dc5440122e4f32248303a Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Sat, 22 Jun 2024 09:49:31 +0200
Subject: [PATCH 06/12] Removed truncate command from PR
---
src/Commands/LaravelRouteTruncateCommand.php | 26 --------------------
1 file changed, 26 deletions(-)
delete mode 100644 src/Commands/LaravelRouteTruncateCommand.php
diff --git a/src/Commands/LaravelRouteTruncateCommand.php b/src/Commands/LaravelRouteTruncateCommand.php
deleted file mode 100644
index e75b871..0000000
--- a/src/Commands/LaravelRouteTruncateCommand.php
+++ /dev/null
@@ -1,26 +0,0 @@
-components->error('Failed to truncate route usage statistics: '.$ex->getMessage());
- }
-
- $this->components->info('Route usage statistics truncated');
-
- return Command::SUCCESS;
- }
-}
From 7f8d608e31f97ee81233e52d2ec535ae5782b54b Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Sat, 22 Jun 2024 22:41:37 +0200
Subject: [PATCH 07/12] Improve column remapping code for route:stats command
---
.../LaravelRouteStatisticsCommand.php | 23 ++++++-------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/src/Commands/LaravelRouteStatisticsCommand.php b/src/Commands/LaravelRouteStatisticsCommand.php
index 5913e53..8ed59a9 100644
--- a/src/Commands/LaravelRouteStatisticsCommand.php
+++ b/src/Commands/LaravelRouteStatisticsCommand.php
@@ -35,28 +35,24 @@ public function handle()
$query->select($this->option('group'))
->addSelect(DB::raw('MAX(date) as last_used'))
->addSelect(DB::raw('SUM(counter) as counter'));
- } else {
- $query->select($this->getColumns());
}
$this->applyFilters($query);
$this->applyGrouping($query);
$this->applySorting($query);
+ $fields = $this->getFields();
+
$results = $query
->limit($this->option('limit'))
->get()
- ->map(function (RouteStatistic $item) {
- $data = $item->toArray();
- if (array_key_exists('parameters', $data)) {
- $data['parameters'] = json_encode($data['parameters']);
- }
-
- return $data;
- });
+ ->map(fn (RouteStatistic $data): array => array_map(
+ fn (mixed $item): mixed => is_array($item) ? json_encode($item) : $item,
+ $data->only($fields)
+ ));
$this->table(
- $this->getFields(),
+ $fields,
$results
);
@@ -124,11 +120,6 @@ protected function getFields(): array
return array_merge($this->option('group'), ['last_used', 'counter']);
}
- return $this->getColumns();
- }
-
- protected function getColumns()
- {
return array_filter([
'id',
'user_id',
From f78491b55f1ee66691a802ed53edbab0c07fbf88 Mon Sep 17 00:00:00 2001
From: Sven Rymenants
Date: Sat, 22 Jun 2024 22:50:25 +0200
Subject: [PATCH 08/12] Removed LaravelRouteTruncateCommand from the service
provider
---
src/LaravelRouteStatisticsServiceProvider.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/LaravelRouteStatisticsServiceProvider.php b/src/LaravelRouteStatisticsServiceProvider.php
index c4d46b3..5730063 100644
--- a/src/LaravelRouteStatisticsServiceProvider.php
+++ b/src/LaravelRouteStatisticsServiceProvider.php
@@ -3,7 +3,6 @@
namespace Bilfeldt\LaravelRouteStatistics;
use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteStatisticsCommand;
-use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteTruncateCommand;
use Bilfeldt\LaravelRouteStatistics\Commands\LaravelRouteUnusedCommand;
use Bilfeldt\LaravelRouteStatistics\Http\Middleware\RouteStatisticsMiddleware;
use Bilfeldt\RequestLogger\RequestLoggerFacade;
@@ -71,7 +70,6 @@ private function bootCommands()
if ($this->app->runningInConsole()) {
$this->commands([
LaravelRouteStatisticsCommand::class,
- LaravelRouteTruncateCommand::class,
LaravelRouteUnusedCommand::class,
]);
}
From c1521ad486f33fb088b99cb37a6f6199f54c524d Mon Sep 17 00:00:00 2001
From: Anders Bilfeldt
Date: Fri, 5 Jul 2024 14:49:06 +0200
Subject: [PATCH 09/12] Add a protected function
---
src/Commands/LaravelRouteStatisticsCommand.php | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/Commands/LaravelRouteStatisticsCommand.php b/src/Commands/LaravelRouteStatisticsCommand.php
index 8ed59a9..3379e65 100644
--- a/src/Commands/LaravelRouteStatisticsCommand.php
+++ b/src/Commands/LaravelRouteStatisticsCommand.php
@@ -46,10 +46,7 @@ public function handle()
$results = $query
->limit($this->option('limit'))
->get()
- ->map(fn (RouteStatistic $data): array => array_map(
- fn (mixed $item): mixed => is_array($item) ? json_encode($item) : $item,
- $data->only($fields)
- ));
+ ->map(fn (RouteStatistic $model): array => $this->toTableRow($model, $fields));
$this->table(
$fields,
@@ -133,4 +130,17 @@ protected function getFields(): array
'counter',
]);
}
+
+ /**
+ * @param RouteStatistic $model
+ * @param $fields array
+ * @return array
+ */
+ protected function toTableRow(RouteStatistic $model, array $fields): array
+ {
+ return array_map(
+ fn (mixed $item): mixed => is_array($item) ? json_encode($item) : $item,
+ $model->only($fields)
+ );
+ }
}
From 251f0fcc41229b972ca63a0f4e8838cca5270761 Mon Sep 17 00:00:00 2001
From: Anders Bilfeldt
Date: Fri, 5 Jul 2024 14:49:33 +0200
Subject: [PATCH 10/12] Skip json encoding
---
src/Models/RouteStatistic.php | 2 +-
tests/Unit/RouteStatisticModelTest.php | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Models/RouteStatistic.php b/src/Models/RouteStatistic.php
index a594336..605b2ca 100644
--- a/src/Models/RouteStatistic.php
+++ b/src/Models/RouteStatistic.php
@@ -86,7 +86,7 @@ public function getLogAttributes(Request $request, $response, ?int $time = null,
'team_id' => $this->getRequestTeam($request)?->getKey(),
'method' => $request->getMethod(),
'route' => $request->route()?->getName() ?? $request->route()?->uri(),
- 'parameters' => config('route-statistics.store_parameters') ? json_encode($request->route()->originalParameters()) : null,
+ 'parameters' => config('route-statistics.store_parameters') ? $request->route()->originalParameters() : null,
'status' => $response->getStatusCode(),
'ip' => $request->ip(),
'date' => $this->getDate(),
diff --git a/tests/Unit/RouteStatisticModelTest.php b/tests/Unit/RouteStatisticModelTest.php
index 221a830..a157aee 100644
--- a/tests/Unit/RouteStatisticModelTest.php
+++ b/tests/Unit/RouteStatisticModelTest.php
@@ -63,7 +63,7 @@ public function test_logs_parameters_if_config_enabled(): void
(new RouteStatistic)->log($request, $response, 1, 2);
$log = RouteStatistic::first();
- $this->assertEquals(json_encode($params), $log->parameters);
+ $this->assertEquals($params, $log->parameters);
}
public function test_logs_parameters_if_config_disabled(): void
From 6119ed8d3fe500ee2fed6b3d6f321eafb24b13d6 Mon Sep 17 00:00:00 2001
From: Anders Bilfeldt
Date: Fri, 5 Jul 2024 14:51:02 +0200
Subject: [PATCH 11/12] Change config key
---
config/route-statistics.php | 2 +-
src/Commands/LaravelRouteStatisticsCommand.php | 2 +-
src/Models/RouteStatistic.php | 2 +-
tests/Unit/RouteStatisticModelTest.php | 4 ++--
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/config/route-statistics.php b/config/route-statistics.php
index b03b860..dc80025 100644
--- a/config/route-statistics.php
+++ b/config/route-statistics.php
@@ -20,7 +20,7 @@
| If this setting is set to true the route parameters will also be logged.
|
*/
- 'store_parameters' => env('ROUTE_STORE_PARAMETERS', false),
+ 'store_route_parameters' => env('ROUTE_STATISTICS_STORE_ROUTE_PARAMETERS', false),
/*
|--------------------------------------------------------------------------
diff --git a/src/Commands/LaravelRouteStatisticsCommand.php b/src/Commands/LaravelRouteStatisticsCommand.php
index 3379e65..be76d9e 100644
--- a/src/Commands/LaravelRouteStatisticsCommand.php
+++ b/src/Commands/LaravelRouteStatisticsCommand.php
@@ -124,7 +124,7 @@ protected function getFields(): array
'method',
'route',
'status',
- config('route-statistics.store_parameters') === true ? 'parameters' : null,
+ config('route-statistics.store_route_parameters') === true ? 'parameters' : null,
'ip',
'date',
'counter',
diff --git a/src/Models/RouteStatistic.php b/src/Models/RouteStatistic.php
index 605b2ca..a2f7642 100644
--- a/src/Models/RouteStatistic.php
+++ b/src/Models/RouteStatistic.php
@@ -86,7 +86,7 @@ public function getLogAttributes(Request $request, $response, ?int $time = null,
'team_id' => $this->getRequestTeam($request)?->getKey(),
'method' => $request->getMethod(),
'route' => $request->route()?->getName() ?? $request->route()?->uri(),
- 'parameters' => config('route-statistics.store_parameters') ? $request->route()->originalParameters() : null,
+ 'parameters' => config('route-statistics.store_route_parameters') ? $request->route()->originalParameters() : null,
'status' => $response->getStatusCode(),
'ip' => $request->ip(),
'date' => $this->getDate(),
diff --git a/tests/Unit/RouteStatisticModelTest.php b/tests/Unit/RouteStatisticModelTest.php
index a157aee..83bcd2a 100644
--- a/tests/Unit/RouteStatisticModelTest.php
+++ b/tests/Unit/RouteStatisticModelTest.php
@@ -49,7 +49,7 @@ public function test_get_log_attributes(): void
public function test_logs_parameters_if_config_enabled(): void
{
- Config::set('route-statistics.store_parameters', true);
+ Config::set('route-statistics.store_route_parameters', true);
$route = 'home';
$params = [
@@ -68,7 +68,7 @@ public function test_logs_parameters_if_config_enabled(): void
public function test_logs_parameters_if_config_disabled(): void
{
- Config::set('route-statistics.store_parameters', false);
+ Config::set('route-statistics.store_route_parameters', false);
$route = 'home';
$params = [
From fb5eec09f7a894733ae31f95820d6ebde8e75f97 Mon Sep 17 00:00:00 2001
From: Anders Bilfeldt
Date: Fri, 5 Jul 2024 14:55:15 +0200
Subject: [PATCH 12/12] StyleCI
---
src/Commands/LaravelRouteStatisticsCommand.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Commands/LaravelRouteStatisticsCommand.php b/src/Commands/LaravelRouteStatisticsCommand.php
index be76d9e..43f13e4 100644
--- a/src/Commands/LaravelRouteStatisticsCommand.php
+++ b/src/Commands/LaravelRouteStatisticsCommand.php
@@ -132,8 +132,8 @@ protected function getFields(): array
}
/**
- * @param RouteStatistic $model
- * @param $fields array
+ * @param RouteStatistic $model
+ * @param $fields array
* @return array
*/
protected function toTableRow(RouteStatistic $model, array $fields): array