cache = $cache; } /** * Get media data. * If caching is enabled, the data will be retrieved from the cache. * * @return mixed[] */ public function get(): array { if (!config('koel.cache_media')) { return $this->query(); } return $this->cache->rememberForever(self::CACHE_KEY, function () { return $this->query(); }); } /** * Query fresh data from the database. * * @return mixed[] */ private function query(): array { return [ 'albums' => Album::orderBy('name')->get(), 'artists' => Artist::orderBy('name')->get(), 'songs' => Song::all(), ]; } /** * Clear the media cache. */ public function clear(): void { $this->cache->forget(self::CACHE_KEY); } }