presseportale/app/Livewire/Concerns/HasFullTextSearch.php
Kevin Adametz a8958c176e Optimierung 5.1: Tabellen-Concerns (Sortierung, Volltext-Heuristik, Stats)
- HasSortableTable::sort() ersetzt 5 byte-identische sort()-Kopien in den
  Admin-Listen (Benutzer, Firmen, Kategorien, Kontakte, Pressemitteilungen).
  $sortBy/$sortDir-Defaults bleiben je Komponente, da sie divergieren.
- HasFullTextSearch::supportsFullTextSearch() ersetzt 9 byte-identische Kopien
  (4 Index-Listen + 5 Firmen-Comboboxen); ungenutzte DB-Imports entfernt.
- AdminPerformanceCache::activeInactiveStats(Builder) buendelt den identischen
  SUM(CASE WHEN is_active)-Block der Benutzer- und Firmenliste.

Zurueckgestellt (real divergent): HasResettableFilters (updatedXxxFilter
normalisieren teils zusaetzlich) und eine gemeinsame hydrateRelationCounts().

Tests: erweiterte AdminPerformanceCacheTest; 99 Admin-Tests bleiben gruen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 12:36:48 +00:00

20 lines
579 B
PHP

<?php
namespace App\Livewire\Concerns;
use Illuminate\Support\Facades\DB;
/**
* Gemeinsame Heuristik, ob für einen Suchbegriff der DB-Volltextindex genutzt
* werden kann: ab drei Zeichen und nur auf MySQL/PostgreSQL (SQLite im Test
* fällt auf die LIKE-Suche zurück). Single Source of Truth für die Admin-Listen
* und Firmen-Comboboxen.
*/
trait HasFullTextSearch
{
private function supportsFullTextSearch(string $term): bool
{
return mb_strlen($term) >= 3
&& in_array(DB::connection()->getDriverName(), ['mysql', 'pgsql'], true);
}
}