chore(clips): clear video clip and soundbite cache on delete

This commit is contained in:
Yassine Doghri 2022-01-10 16:52:12 +00:00
parent bd61752be2
commit 241366130e
3 changed files with 33 additions and 33 deletions

View File

@ -109,33 +109,6 @@ class ClipModel extends Model
return $found;
}
/**
* Gets all video clips for an episode
*
* @return BaseClip[]
*/
public function getVideoClips(int $podcastId, int $episodeId): array
{
$cacheName = "podcast#{$podcastId}_episode#{$episodeId}_video-clips";
if (! ($found = cache($cacheName))) {
$found = $this->where([
'episode_id' => $episodeId,
'podcast_id' => $podcastId,
'type' => 'video',
])
->orderBy('start_time')
->findAll();
foreach ($found as $key => $videoClip) {
$found[$key] = new VideoClip($videoClip->toArray());
}
cache()
->save($cacheName, $found, DECADE);
}
return $found;
}
/**
* Gets scheduled video clips for an episode
*
@ -157,6 +130,23 @@ class ClipModel extends Model
return $found;
}
public function deleteVideoClip(int $podcastId, int $episodeId, int $clipId): BaseResult | bool
{
$this->clearVideoClipCache($clipId);
return $this->delete([
'podcast_id' => $podcastId,
'episode_id' => $episodeId,
'id' => $clipId,
]);
}
public function clearVideoClipCache(int $clipId): void
{
cache()
->delete("video-clip#{$clipId}");
}
public function getSoundbiteById(int $soundbiteId): ?Soundbite
{
$cacheName = "soundbite#{$soundbiteId}";
@ -206,8 +196,7 @@ class ClipModel extends Model
public function deleteSoundbite(int $podcastId, int $episodeId, int $clipId): BaseResult | bool
{
cache()
->delete("podcast#{$podcastId}_episode#{$episodeId}_soundbites");
$this->clearSoundbiteCache($podcastId, $episodeId, $clipId);
return $this->delete([
'podcast_id' => $podcastId,
@ -216,6 +205,11 @@ class ClipModel extends Model
]);
}
// cache()
// ->deleteMatching("page_podcast#{$clip->podcast_id}_episode#{$clip->episode_id}_*");
public function clearSoundbiteCache(int $podcastId, int $episodeId, int $clipId): void
{
cache()
->delete("podcast#{$podcastId}_episode#{$episodeId}_soundbites");
cache()
->delete("soundbite#{$clipId}");
}
}

View File

@ -150,9 +150,12 @@ class SoundbiteController extends BaseController
if ($soundbite->media === null) {
// delete Clip directly
(new ClipModel())->delete($soundbite->id);
(new ClipModel())->deleteSoundbite($this->podcast->id, $this->episode->id, $soundbite->id);
} else {
(new ClipModel())->clearSoundbiteCache($this->podcast->id, $this->episode->id, $soundbite->id);
$mediaModel = new MediaModel();
// delete the soundbite file, the clip will be deleted on cascade
if (! $mediaModel->deleteMedia($soundbite->media)) {
return redirect()
->back()

View File

@ -211,9 +211,12 @@ class VideoClipsController extends BaseController
if ($videoClip->media === null) {
// delete Clip directly
(new ClipModel())->delete($videoClip->id);
(new ClipModel())->deleteVideoClip($this->podcast->id, $this->episode->id, $videoClip->id);
} else {
(new ClipModel())->clearVideoClipCache($videoClip->id);
$mediaModel = new MediaModel();
// delete the videoClip file, the clip will be deleted on cascade
if (! $mediaModel->deleteMedia($videoClip->media)) {
return redirect()
->back()