#3356 -- Remove media from upcoming queue if cleared from playlist.
This commit is contained in:
parent
98d3c2ccbd
commit
19a496a8ff
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
Loading…
Reference in New Issue