Files
2026-04-18 17:02:56 +02:00

1.7 KiB

Today Downloads

Route

  • URL: GET /downloads/today
  • Controller: App\Http\Controllers\User\TodayDownloadsController::index()

Important scope note

This page is not inside /discover/*, but it is included here because it is discovery-adjacent and was requested together with the Discover surfaces.

What the page reads

This page does not use Meilisearch. It is a direct MySQL query over the download event log.

Query logic

The controller:

  1. Takes today's date
  2. Reads artwork_downloads
  3. Filters rows to whereDate(created_at, today)
  4. Groups by artwork_id
  5. Orders by COUNT(*) DESC
  6. Eager-loads each artwork and related user/category data

Effectively:

SELECT artwork_id, COUNT(*) AS num_downloads
FROM artwork_downloads
WHERE DATE(created_at) = today
GROUP BY artwork_id
ORDER BY num_downloads DESC

Only artworks that are currently public and published are allowed through whereHas('artwork', ...).

Data sources

  • primary source: artwork_downloads
  • supporting source: artworks, users, user_profiles, categories

Unlike Most Downloaded, this page does not trust the aggregate artwork_stats.downloads counter for ranking. It re-counts today's actual events.

Cache behavior

  • no dedicated application cache in the controller

The page is as fresh as the underlying event log.

Background jobs and schedules

No page-specific cron is needed because it reads the raw event log directly.

The only prerequisite is that downloads are being recorded correctly by the download endpoint.

Notes

  • This page is often the more operationally trustworthy answer to "what is being downloaded right now?"
  • Because it counts raw rows, it is less sensitive to delayed aggregate-counter flushes than Most Downloaded.