Tüm müzik içeriklerinin merkezi yönetimi
Tüm şarkı, albüm, sanatçı, playlist ve radyo içeriklerini tek merkezden yönetebileceğiniz bir yapı kurduk.
Admin panelden içerik listesi görüntülendiğinde veya düzenlendiğinde arka planda şu işlemler gerçekleşir:
Şarkı, albüm, sanatçı gibi farklı içerik türleri ortak bir arayüz üzerinden sorgulanır. Content trait sayesinde tüm içerikler aynı metodlarla yönetilebilir. Bu modüler yapı sayesinde yeni içerik türü eklemek çok kolay.
Modules/Muzibu/App/Models/{Song,Album,Artist}.php
Tür, sanatçı, durum (yayında/taslak) gibi filtreler Livewire ile anında uygulanır. Her filtre değişikliğinde sorgu yeniden çalışır ama sadece değişen kısım güncellenir, sayfa yenilenmez.
Modules/Muzibu/App/Http/Livewire/Admin/ContentComponent.php
Her şarkı için sanatçı, albüm, tür ilişkileri tek sorguda çekilir. N+1 sorgu problemi önlenir. 10.000 şarkı bile hızlıca listelenir çünkü veritabanına minimum sayıda sorgu atılır.
Song::with(['artist', 'album', 'genres'])->paginate()
İçerik aramasında MySQL full-text search kullanılır. "Tarkan" yazıldığında hem sanatçı adında hem şarkı adında geçen tüm kayıtlar bulunur. Scout/Meilisearch ile daha hızlı arama da mümkün.
Song::whereFullText(['name', 'lyrics'], $search)
İçerik listesi Redis'te önbelleklenir. Yeni içerik eklendiğinde veya mevcut içerik güncellendiğinde cache otomatik temizlenir. Böylece hem hız hem de güncellik sağlanır.
Cache::tags(['content', 'songs'])->flush()