#3356 -- Remove media from upcoming queue if cleared from playlist.

This commit is contained in:
Buster "Silver Eagle" Neece 2020-11-30 23:27:23 -06:00
parent 98d3c2ccbd
commit 19a496a8ff
No known key found for this signature in database
GPG Key ID: 6D9E12FF03411F4E
2 changed files with 39 additions and 2 deletions

View File

@ -5,11 +5,29 @@ namespace App\Entity\Repository;
use App\Doctrine\Repository;
use App\Entity;
use App\Entity\StationPlaylist;
use App\Settings;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\NoResultException;
use Psr\Log\LoggerInterface;
use RuntimeException;
use Symfony\Component\Serializer\Serializer;
class StationPlaylistMediaRepository extends Repository
{
protected StationQueueRepository $queueRepo;
public function __construct(
EntityManagerInterface $em,
Serializer $serializer,
Settings $settings,
LoggerInterface $logger,
StationQueueRepository $queueRepo
) {
parent::__construct($em, $serializer, $settings, $logger);
$this->queueRepo = $queueRepo;
}
/**
* Add the specified media to the specified playlist.
* Must flush the EntityManager after using.
@ -96,6 +114,8 @@ class StationPlaylistMediaRepository extends Repository
$affectedPlaylists[$playlist->getId()] = $playlist;
$this->queueRepo->clearForMediaAndPlaylist($media, $playlist);
$this->em->remove($spmRow);
}

View File

@ -8,6 +8,19 @@ use Doctrine\ORM\QueryBuilder;
class StationQueueRepository extends Repository
{
public function clearForMediaAndPlaylist(Entity\StationMedia $media, Entity\StationPlaylist $playlist): void
{
$this->em->createQuery(
<<<'DQL'
DELETE FROM App\Entity\StationQueue sq
WHERE sq.media = :media AND sq.playlist = :playlist
DQL
)
->setParameter('media', $media)
->setParameter('playlist', $playlist)
->execute();
}
public function getNextVisible(Entity\Station $station): ?Entity\StationQueue
{
$queue = $this->getUpcomingQueue($station);
@ -30,8 +43,12 @@ class StationQueueRepository extends Repository
$station = $queueRow->getStation();
// Remove all existing records that are marked as "sent to AutoDJ".
$this->em->createQuery(/** @lang DQL */ 'DELETE FROM App\Entity\StationQueue sq
WHERE sq.station = :station AND sq.sent_to_autodj = 1')
$this->em->createQuery(
<<<'DQL'
DELETE FROM App\Entity\StationQueue sq
WHERE sq.station = :station AND sq.sent_to_autodj = 1
DQL
)
->setParameter('station', $station)
->execute();