From 85e3c4ff2e62ca3db663e7de1f5fd1ff9bd8b95a Mon Sep 17 00:00:00 2001 From: Rico van Zelst Date: Sat, 6 Jan 2024 00:15:19 +0100 Subject: [PATCH] feat(controllers): optimize caching and view data passing - Refactored the ChampionController, ChampionSkinController, HomeController, SaleController, SummonerEmoteController, and SummonerIconController to use arrow functions for cache callbacks. - Updated the view data passing in the ChampionController, ChampionSkinController, HomeController, PostsController, SaleController, SummonerEmoteController, and SummonerIconController to use associative arrays instead of compact(). - Removed unused imports from web.php. --- app/Http/Controllers/ChampionController.php | 20 ++---- .../Controllers/ChampionSkinController.php | 12 ++-- app/Http/Controllers/HomeController.php | 12 ++-- app/Http/Controllers/PostsController.php | 2 +- app/Http/Controllers/SaleController.php | 8 +-- .../Controllers/SummonerEmoteController.php | 2 +- .../Controllers/SummonerIconController.php | 4 +- routes/web.php | 70 ++++++------------- 8 files changed, 43 insertions(+), 87 deletions(-) diff --git a/app/Http/Controllers/ChampionController.php b/app/Http/Controllers/ChampionController.php index f10665d..b634a9b 100644 --- a/app/Http/Controllers/ChampionController.php +++ b/app/Http/Controllers/ChampionController.php @@ -17,15 +17,11 @@ class ChampionController extends Controller { $eightHoursInSeconds = 60 * 60 * 8; - $champions = Cache::remember('championsListAllCache', $eightHoursInSeconds, function () { - return Champion::orderBy('name')->get(); - }); + $champions = Cache::remember('championsListAllCache', $eightHoursInSeconds, static fn() => Champion::orderBy('name')->get()); - $roles = Cache::remember('championsRolesCache', $eightHoursInSeconds, function () { - return ChampionRoles::orderBy('champion_name')->get(); - }); + $roles = Cache::remember('championsRolesCache', $eightHoursInSeconds, static fn() => ChampionRoles::orderBy('champion_name')->get()); - return view('champions.index', compact('champions', 'roles')); + return view('champions.index', ['champions' => $champions, 'roles' => $roles]); } /** @@ -52,21 +48,17 @@ class ChampionController extends Controller $eightHoursInSeconds = 60 * 60 * 8; $dayInSeconds = 60 * 60 * 24; - $champion = Cache::remember('championShowCache' . $champion->slug, $eightHoursInSeconds, function () use ($champion) { - return $champion->load('skins', 'lanes'); - }); + $champion = Cache::remember('championShowCache' . $champion->slug, $eightHoursInSeconds, static fn() => $champion->load('skins', 'lanes')); $splashColor = Cache::remember( 'championSplashColorCache' . $champion->slug, $dayInSeconds, - function () use ($champion) { - return getAverageColorFromImageUrl($champion->getChampionImageAttribute()); - } + static fn() => getAverageColorFromImageUrl($champion->getChampionImageAttribute()) ); $champion->splash_color = $splashColor; - return view('champions.show', compact('champion')); + return view('champions.show', ['champion' => $champion]); } /** diff --git a/app/Http/Controllers/ChampionSkinController.php b/app/Http/Controllers/ChampionSkinController.php index 53425a2..2eedc92 100644 --- a/app/Http/Controllers/ChampionSkinController.php +++ b/app/Http/Controllers/ChampionSkinController.php @@ -30,7 +30,7 @@ class ChampionSkinController extends Controller 'Ultimate' => 'text-yellow-400', ]; - return view('skins.index', compact('skins', 'rarityColor')); + return view('skins.index', ['skins' => $skins, 'rarityColor' => $rarityColor]); } /** @@ -57,22 +57,18 @@ class ChampionSkinController extends Controller $skin = Cache::remember( 'championSkinShowCache' . $championSkin->slug, 60 * 60 * 8, - function () use ($championSkin) { - return $championSkin->load('champion', 'chromas'); - } + static fn() => $championSkin->load('champion', 'chromas') ); $splashColor = Cache::remember( 'championSkinSplashColorCache' . $championSkin->slug, 60 * 60 * 24, - function () use ($championSkin) { - return getAverageColorFromImageUrl($championSkin->getSkinImageAttribute()); - } + static fn() => getAverageColorFromImageUrl($championSkin->getSkinImageAttribute()) ); $skin->splash_color = $splashColor; - return view('skins.show', compact('skin')); + return view('skins.show', ['skin' => $skin]); } /** diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index d1ce9d5..ff510ad 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -9,15 +9,11 @@ class HomeController extends Controller { public function index() { - $upcomingSkins = Cache::remember('upcomingSkins_home', 60 * 4, function () { - return ChampionSkin::where('availability', 'Upcoming') - ->orderBy('release_date', 'desc')->get(); - }); + $upcomingSkins = Cache::remember('upcomingSkins_home', 60 * 4, static fn() => ChampionSkin::where('availability', 'Upcoming') + ->orderBy('release_date', 'desc')->get()); - $latestSkins = Cache::remember('latestSkins_home', 60 * 4, function () { - return ChampionSkin::where('availability', 'Available') - ->orderBy('release_date', 'desc')->take(9)->get(); - }); + $latestSkins = Cache::remember('latestSkins_home', 60 * 4, static fn() => ChampionSkin::where('availability', 'Available') + ->orderBy('release_date', 'desc')->take(9)->get()); return view('home', [ 'latestSkins' => $latestSkins, diff --git a/app/Http/Controllers/PostsController.php b/app/Http/Controllers/PostsController.php index 8207a5b..7582c2b 100644 --- a/app/Http/Controllers/PostsController.php +++ b/app/Http/Controllers/PostsController.php @@ -20,6 +20,6 @@ class PostsController extends Controller public function show(Sheet $post) { - return view('posts.show', compact('post')); + return view('posts.show', ['post' => $post]); } } diff --git a/app/Http/Controllers/SaleController.php b/app/Http/Controllers/SaleController.php index 38f5b9c..3d4eff6 100644 --- a/app/Http/Controllers/SaleController.php +++ b/app/Http/Controllers/SaleController.php @@ -8,17 +8,15 @@ class SaleController extends Controller { public function index() { - $sales = Cache::remember('sales_data', 60 * 60 * 8, function () { + $sales = Cache::remember('sales_data', 60 * 60 * 8, static function () { $shopData = json_decode( file_get_contents('https://api.shop.riotgames.com/v3/collections/'), true ); - $salesData = array_filter($shopData, function ($collection) { - return $collection['path'] === '/event/sales'; - }); + $salesData = array_filter($shopData, static fn($collection) => $collection['path'] === '/event/sales'); return reset($salesData)['dynamicCollection']['discountedProductsByProductType'] ?? []; }); - return view('sales.index', compact('sales')); + return view('sales.index', ['sales' => $sales]); } } diff --git a/app/Http/Controllers/SummonerEmoteController.php b/app/Http/Controllers/SummonerEmoteController.php index a59ac0e..b974452 100644 --- a/app/Http/Controllers/SummonerEmoteController.php +++ b/app/Http/Controllers/SummonerEmoteController.php @@ -16,7 +16,7 @@ class SummonerEmoteController extends Controller ->paginate(72) ->appends(request()->query()); - return view('emotes.index', compact('emotes')); + return view('emotes.index', ['emotes' => $emotes]); } public function store(Request $request) diff --git a/app/Http/Controllers/SummonerIconController.php b/app/Http/Controllers/SummonerIconController.php index 14cb557..095d78a 100644 --- a/app/Http/Controllers/SummonerIconController.php +++ b/app/Http/Controllers/SummonerIconController.php @@ -16,7 +16,7 @@ class SummonerIconController extends Controller ->paginate(72) ->appends(request()->query()); - return view('icons.index', compact('icons')); + return view('icons.index', ['icons' => $icons]); } public function store(Request $request) @@ -40,7 +40,7 @@ class SummonerIconController extends Controller { $icon = $summonerIcon; - return view('icons.show', compact('icon')); + return view('icons.show', ['icon' => $icon]); } public function update(Request $request, SummonerIcon $summonerIcon) diff --git a/routes/web.php b/routes/web.php index 94f5e62..3ce7d91 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,14 +3,17 @@ use App\Http\Controllers\AboutController; use App\Http\Controllers\AssetsController; use App\Http\Controllers\ChampionController; +use App\Http\Controllers\ChampionSkinController; use App\Http\Controllers\FAQController; +use App\Http\Controllers\HomeController; use App\Http\Controllers\PostsController; use App\Http\Controllers\SaleController; use App\Http\Controllers\SummonerEmoteController; -use Illuminate\Support\Facades\Route; -use App\Http\Controllers\HomeController; -use App\Http\Controllers\ChampionSkinController; use App\Http\Controllers\SummonerIconController; +use App\Models\Champion; +use App\Models\SummonerIcon; +use Illuminate\Support\Facades\Route; +use Spatie\Sheets\Sheet; /* |-------------------------------------------------------------------------- @@ -23,72 +26,43 @@ use App\Http\Controllers\SummonerIconController; | */ -Route::get('/', [HomeController::class, 'index']); +Route::get('/', static fn () => (new HomeController())->index()); // Champions -Route::get('/champions', [ChampionController::class, 'index'])->name('champions.index'); -Route::get('/champion/{champion}', [ChampionController::class, 'show'])->name('champions.show'); +Route::get('/champions', static fn () => (new ChampionController())->index())->name('champions.index'); +Route::get('/champion/{champion}', static fn (Champion $champion) => (new ChampionController())->show($champion))->name('champions.show'); // Skins -Route::get('/skins', [ChampionSkinController::class, 'index'])->name('skins.index'); +Route::get('/skins', static fn () => (new ChampionSkinController())->index())->name('skins.index'); Route::get( '/skin/{championSkin}', - [ChampionSkinController::class, 'show'] + static fn (\App\Models\ChampionSkin $championSkin) => (new ChampionSkinController())->show($championSkin) )->name('skins.show'); // Icons -Route::get('/icons', [ - SummonerIconController::class, - 'index' -])->name('assets.icons.index'); -Route::get('/icon/{summonerIcon}', [ - SummonerIconController::class, - 'show' -])->name('assets.icons.show'); +Route::get('/icons', static fn () => (new SummonerIconController())->index())->name('assets.icons.index'); +Route::get('/icon/{summonerIcon}', static fn (SummonerIcon $summonerIcon) => (new SummonerIconController())->show($summonerIcon))->name('assets.icons.show'); // Emotes -Route::get('/emotes', [ - SummonerEmoteController::class, - 'index' -])->name('assets.emotes.index'); +Route::get('/emotes', static fn () => (new SummonerEmoteController())->index())->name('assets.emotes.index'); // Assets -Route::get('/assets', [ - AssetsController::class, - 'index' -])->name('assets.index'); +Route::get('/assets', static fn () => (new AssetsController())->index())->name('assets.index'); // Sales -Route::get('/sale-rotation', [SaleController::class, 'index'])->name('sales.index'); +Route::get('/sale-rotation', static fn () => (new SaleController())->index())->name('sales.index'); // About -Route::get('/about', [ - AboutController::class, - 'index' -])->name('about.index'); +Route::get('/about', static fn () => (new AboutController())->index())->name('about.index'); // About.FAQController -Route::get('/about/faq/league-of-legends', [ - FAQController::class, - 'leagueoflegends' -])->name('about.faq.leagueoflegends'); +Route::get('/about/faq/league-of-legends', static fn () => (new FAQController())->leagueoflegends())->name('about.faq.leagueoflegends'); -Route::get('/about/faq/heimerdinger', [ - FAQController::class, - 'heimerdinger' -])->name('about.faq.heimerdinger'); +Route::get('/about/faq/heimerdinger', static fn () => (new FAQController())->heimerdinger())->name('about.faq.heimerdinger'); // Posts -Route::get('/posts', [ - PostsController::class, - 'index' -])->name('posts.index'); +Route::get('/posts', static fn () => (new PostsController())->index())->name('posts.index'); -Route::get('/post/{post}', [ - PostsController::class, - 'show' -])->name('posts.show'); +Route::get('/post/{post}', static fn (Sheet $post) => (new PostsController())->show($post))->name('posts.show'); // Pulse -Route::get(config('app.login_route'), function () { - return redirect('/pulse'); -})->name('login')->middleware('auth.basic'); +Route::get(config('app.login_route'), static fn () => redirect('/pulse'))->name('login')->middleware('auth.basic');