|
2 | 2 |
|
3 | 3 | namespace App\Web\Analytics; |
4 | 4 |
|
5 | | -use App\Web\Analytics\PackageDownloadsPerHour\PackageDownloadsPerHour; |
6 | 5 | use App\Web\Analytics\VisitsPerDay\VisitsPerDay; |
7 | | -use App\Web\Analytics\VisitsPerHour\VisitsPerHour; |
8 | | -use DateInterval; |
9 | | -use DateTimeImmutable; |
10 | 6 | use Tempest\Clock\Clock; |
11 | | -use Tempest\Database\Query; |
12 | 7 | use Tempest\DateTime\Duration; |
13 | 8 | use Tempest\Router\Get; |
14 | 9 | use Tempest\View\View; |
15 | 10 |
|
| 11 | +use function Tempest\Database\query; |
16 | 12 | use function Tempest\Support\arr; |
17 | 13 | use function Tempest\view; |
18 | 14 |
|
|
21 | 17 | #[Get('/stats')] |
22 | 18 | public function __invoke(Clock $clock): View |
23 | 19 | { |
24 | | - $now = $clock->now(); |
25 | | - |
26 | | - $visitsPerHour = arr( |
27 | | - VisitsPerHour::select() |
28 | | - ->where('date >= ?', $now->minus(Duration::hours(24))->format('Y-m-d H:i:s')) |
29 | | - ->all(), |
30 | | - ); |
31 | | - |
32 | 20 | $visitsPerDay = arr( |
33 | | - VisitsPerDay::select() |
34 | | - ->where('date >= ?', $now->minus(Duration::days(30))->format('Y-m-d H:i:s')) |
35 | | - ->all(), |
36 | | - ); |
37 | | - |
38 | | - $packageDownloadsPerHour = arr(new Query(<<<SQL |
39 | | - SELECT `date`, SUM(`count`) as `count` FROM package_downloads_per_hours WHERE `date` >= :date GROUP BY `date` |
40 | | - SQL)->fetch( |
41 | | - date: $now->minus(Duration::days(24))->format('Y-m-d H:i:s'), |
42 | | - )); |
43 | | - |
44 | | - $packageDownloadsPerDay = arr(new Query(<<<SQL |
45 | | - SELECT `date`, SUM(`count`) as `count` FROM package_downloads_per_days WHERE date >= :date GROUP BY `date` |
46 | | - SQL)->fetch( |
47 | | - date: $now->minus(Duration::days(30))->format('Y-m-d H:i:s'), |
48 | | - )); |
| 21 | + query(VisitsPerDay::class)->select()->orderBy('date DESC')->limit(30)->all(), |
| 22 | + )->reverse(); |
49 | 23 |
|
50 | 24 | return view( |
51 | 25 | __DIR__ . '/stats.view.php', |
52 | 26 |
|
53 | | - visitsPerHour: new Chart( |
54 | | - labels: $visitsPerHour->map(fn (VisitsPerHour $item) => $item->date->format('H:i')), |
55 | | - values: $visitsPerHour->map(fn (VisitsPerHour $item) => $item->count), |
56 | | - ), |
57 | | - |
58 | 27 | visitsPerDay: new Chart( |
59 | 28 | labels: $visitsPerDay->map(fn (VisitsPerDay $item) => $item->date->format('Y-m-d')), |
60 | 29 | values: $visitsPerDay->map(fn (VisitsPerDay $item) => $item->count), |
61 | 30 | ), |
62 | | - |
63 | | - packageDownloadsPerHour: new Chart( |
64 | | - labels: $packageDownloadsPerHour->map(fn (array $item) => new DateTimeImmutable($item['date'])->format('H:i')), |
65 | | - values: $packageDownloadsPerHour->map(fn (array $item) => $item['count']), |
66 | | - ), |
67 | | - |
68 | | - packageDownloadsPerDay: new Chart( |
69 | | - labels: $packageDownloadsPerDay->map(fn (array $item) => new DateTimeImmutable($item['date'])->format('Y-m-d')), |
70 | | - values: $packageDownloadsPerDay->map(fn (array $item) => $item['count']), |
71 | | - ), |
72 | 31 | ); |
73 | 32 | } |
74 | 33 | } |
0 commit comments