feat: Add caching to streamer data retrieval

- Added caching mechanism to store and retrieve streamer data for API responses, improving performance.
- Implemented cache forget method in StreamerPanelController for CRUD operations to update cached data accordingly.
This commit is contained in:
Rico van Zelst
2024-03-26 10:30:09 +01:00
parent 39e9acf85b
commit 7ccd8ba022
3 changed files with 23 additions and 10 deletions

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
use App\Models\Streamer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class StreamerController extends Controller
{
@@ -22,4 +24,15 @@ class StreamerController extends Controller
{
//
}
/**
* API: JSON response of all streamers.
* Data is cached for 12 hours.
*/
public function all()
{
$streamers = Cache::remember('streamersListAllAPICache', 60 * 60 * 12, static fn () => Streamer::orderBy('champion_id')->get());
return response()->json($streamers);
}
}

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Streamer;
use App\Models\Champion;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class StreamerPanelController extends Controller
{
@@ -41,6 +42,8 @@ class StreamerPanelController extends Controller
Streamer::create($request->all());
Cache::forget('streamersListAllAPICache');
return redirect()->route('streamerpanel.index');
}
@@ -69,6 +72,8 @@ class StreamerPanelController extends Controller
$streamer->update($request->all());
Cache::forget('streamersListAllAPICache');
return redirect()->route('streamerpanel.index');
}
@@ -79,6 +84,8 @@ class StreamerPanelController extends Controller
{
$streamer->delete();
Cache::forget('streamersListAllAPICache');
return redirect()->route('streamerpanel.index');
}
}

View File

@@ -1,12 +1,5 @@
<?php
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
use App\Http\Controllers\StreamerController;
Route::get('/streamers', [StreamerController::class, 'all']);