Wire admin studio SSR and search infrastructure

This commit is contained in:
2026-05-01 11:46:06 +02:00
parent 257b0dbef6
commit 18cea8b0f0
329 changed files with 197465 additions and 2741 deletions

View File

@@ -3,10 +3,10 @@
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\ArtworkDownload;
use Illuminate\Support\Str;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class TodayDownloadsController extends Controller
{
@@ -15,20 +15,40 @@ class TodayDownloadsController extends Controller
$hits = 30;
$today = Carbon::now()->toDateString();
$artworkVisibilityScope = function ($q) {
$q->public()->published()->whereNull('deleted_at');
};
$hasTodayDownloads = ArtworkDownload::query()
->whereHas('artwork', $artworkVisibilityScope)
->whereDate('created_at', $today)
->exists();
$query = ArtworkDownload::with([
'artwork.user:id,name,username',
'artwork.user.profile:user_id,avatar_hash',
'artwork.categories:id,name,slug',
])
->whereDate('created_at', $today)
->whereHas('artwork', function ($q) {
$q->public()->published()->whereNull('deleted_at');
})
->whereHas('artwork', $artworkVisibilityScope)
->selectRaw('artwork_id, COUNT(*) as num_downloads')
->groupBy('artwork_id')
->orderByDesc('num_downloads');
if ($hasTodayDownloads) {
$query->whereDate('created_at', $today);
} else {
$fallbackDownloadIds = ArtworkDownload::query()
->whereHas('artwork', $artworkVisibilityScope)
->orderByDesc('created_at')
->limit(1000)
->pluck('id');
if ($fallbackDownloadIds->isEmpty()) {
$query->whereRaw('1 = 0');
} else {
$query->whereIn('id', $fallbackDownloadIds->all());
}
}
$paginator = $query->paginate($hits)->withQueryString();
$paginator->getCollection()->transform(function ($row) {
@@ -61,7 +81,7 @@ class TodayDownloadsController extends Controller
$categoryId = $primaryCategory->id ?? null;
$categoryName = $primaryCategory->name ?? '';
$categorySlug = $primaryCategory->slug ?? '';
$avatarHash = $art->user->profile->avatar_hash ?? null;
$avatarHash = $art->user?->profile?->avatar_hash;
return (object) [
'id' => $art->id ?? null,
@@ -87,8 +107,15 @@ class TodayDownloadsController extends Controller
];
});
$page_title = 'Today Downloaded Artworks';
$page_title = $hasTodayDownloads
? 'Today Downloaded Artworks'
: 'Most Downloaded from Latest 1000 Downloads';
return view('web.downloads.today', ['page_title' => $page_title, 'artworks' => $paginator]);
return view('web.downloads.today', [
'page_title' => $page_title,
'artworks' => $paginator,
'display_date' => $today,
'is_fallback_window' => ! $hasTodayDownloads,
]);
}
}