chore(clips): clear video clip and soundbite cache on delete
This commit is contained in:
parent
bd61752be2
commit
241366130e
|
@ -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}");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue