id) ->orderByDesc('created_at') ->get(['game_slug', 'game_name', 'game_image', 'game_provider', 'created_at']); return response()->json(['data' => $favorites]); } /** * POST /api/favorites — add a game to favorites * Body: { slug, name?, image?, provider? } */ public function store(Request $request) { $user = Auth::user(); abort_unless($user, 401); $data = $request->validate([ 'slug' => ['required', 'string', 'max:128'], 'name' => ['nullable', 'string', 'max:255'], 'image' => ['nullable', 'string', 'max:512'], 'provider' => ['nullable', 'string', 'max:100'], ]); $fav = UserFavorite::firstOrCreate( ['user_id' => $user->id, 'game_slug' => $data['slug']], [ 'game_name' => $data['name'] ?? null, 'game_image' => $data['image'] ?? null, 'game_provider' => $data['provider'] ?? null, ] ); return response()->json(['data' => $fav], 201); } /** * DELETE /api/favorites/{slug} — remove from favorites */ public function destroy(Request $request, string $slug) { $user = Auth::user(); abort_unless($user, 401); UserFavorite::where('user_id', $user->id) ->where('game_slug', $slug) ->delete(); return response()->json(['success' => true]); } }