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; } }