diff --git a/CHANGELOG.md b/CHANGELOG.md index dfba1d9..75fbf5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ No breaking changes. The only changes are to the development dependencies used f ## Changes +- Add second-level aggregation and make sure that microseconds is always set to 0 + ### 3.2.0 - 2024-02-28 - Add Laravel 11 compatibility diff --git a/config/route-statistics.php b/config/route-statistics.php index 92cca24..7e21248 100644 --- a/config/route-statistics.php +++ b/config/route-statistics.php @@ -18,7 +18,7 @@ |-------------------------------------------------------------------------- | | This setting controls how we should aggregate requests. - | Possible values are: MINUTE, HOUR, DAY, MONTH, YEAR + | Possible values are: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR | */ 'aggregate' => env('ROUTE_STATISTICS_AGGREGATE', 'DAY'), diff --git a/src/Models/RouteStatistic.php b/src/Models/RouteStatistic.php index b27a00e..aa3e823 100644 --- a/src/Models/RouteStatistic.php +++ b/src/Models/RouteStatistic.php @@ -109,10 +109,14 @@ protected function getDate() $date = Date::now(); $aggregate = config('route-statistics.aggregate'); - if ($aggregate && ! in_array($aggregate, ['YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE'])) { + if ($aggregate && ! in_array($aggregate, ['YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND'])) { throw new \OutOfBoundsException('Invalid date aggregation'); } + if (in_array($aggregate, ['YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND'])) { + $date->setMicrosecond(0); + } + if (in_array($aggregate, ['YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE'])) { $date->setSecond(0); }