delete([ 'podcast_id' => $podcastId, 'episode_id' => $episodeId, 'id' => $soundbiteId, ]); } /** * Gets all soundbites for an episode * * @return Soundbite[] */ public function getEpisodeSoundbites(int $podcastId, int $episodeId): array { $cacheName = "podcast#{$podcastId}_episode#{$episodeId}_soundbites"; if (!($found = cache($cacheName))) { $found = $this->where([ 'episode_id' => $episodeId, 'podcast_id' => $podcastId, ]) ->orderBy('start_time') ->findAll(); cache()->save($cacheName, $found, DECADE); } return $found; } /** * @param array> $data * @return array> */ public function clearCache(array $data): array { $episode = (new EpisodeModel())->find( isset($data['data']) ? $data['data']['episode_id'] : $data['id']['episode_id'], ); cache()->delete( "podcast#{$episode->podcast_id}_episode#{$episode->id}_soundbites", ); // delete cache for rss feed cache()->deleteMatching("podcast#{$episode->podcast_id}_feed*"); cache()->deleteMatching( "page_podcast#{$episode->podcast_id}_episode#{$episode->id}_*", ); return $data; } }