tailTable('credit_ledger', $request); } public function walletTxns(Request $request): JsonResponse { return $this->tailTable('wallet_txns', $request); } public function ticketItems(Request $request): JsonResponse { return $this->tailTable('ticket_items', $request); } /** * @return JsonResponse */ private function tailTable(string $table, Request $request): JsonResponse { $limit = max(1, min(100, (int) $request->input('limit', 20))); $playerId = $request->input('player_id'); $q = DB::table($table); if ($playerId !== null) { $pid = (int) $playerId; if ($table === 'credit_ledger') { $q->where('owner_type', 'player')->where('owner_id', $pid); } else { $q->where('player_id', $pid); } } $rows = $q->orderByDesc('id')->limit($limit)->get(); return ApiResponse::success([ 'table' => $table, 'count' => $rows->count(), 'rows' => $rows->map(fn ($r) => (array) $r)->values()->all(), ]); } }