json(Asset::orderBy('symbol')->get()); } public function store(Request $request): JsonResponse { $validated = $request->validate([ 'symbol' => 'required|string|max:10|unique:assets,symbol', 'full_name' => 'nullable|string|max:255', ]); $asset = Asset::create([ 'symbol' => strtoupper($validated['symbol']), 'full_name' => $validated['full_name'], ]); return response()->json([ 'success' => true, 'message' => 'Asset created successfully!', 'asset' => $asset, ], 201); } public function show(Asset $asset): JsonResponse { $asset->load('assetPrices'); return response()->json([ 'asset' => $asset, 'current_price' => $asset->currentPrice(), ]); } public function search(Request $request): JsonResponse { $query = $request->get('q'); if (! $query) { return response()->json([]); } $assets = Asset::where('symbol', 'like', "%{$query}%") ->orWhere('full_name', 'like', "%{$query}%") ->orderBy('symbol') ->limit(10) ->get(); return response()->json($assets); } }