Add "is_enabled" flag to Podcasts.

This commit is contained in:
Buster Neece 2024-04-25 10:19:37 -05:00
parent 3f9c21b63c
commit 66df8f7850
No known key found for this signature in database
4 changed files with 48 additions and 0 deletions

View File

@ -42,6 +42,9 @@ final class Podcast
#[OA\Property]
public string $description_short;
#[OA\Property]
public bool $is_enabled = true;
#[OA\Property(
description: "An array containing podcast-specific branding configuration",
type: "array",

View File

@ -48,6 +48,8 @@ final class PodcastApiGenerator
$return->description = $record->getDescription();
$return->description_short = Strings::truncateText($return->description, 200);
$return->is_enabled = $record->isEnabled();
$return->branding_config = $record->getBrandingConfig()->toArray();
$return->language = $record->getLanguage();

View File

@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
namespace App\Entity\Migration;
use Doctrine\DBAL\Schema\Schema;
final class Version20240425151151 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add is_enabled flag for podcasts.';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE podcast ADD is_enabled TINYINT(1) NOT NULL AFTER description');
$this->addSql(<<<'SQL'
UPDATE podcast
SET is_enabled=1
SQL);
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE podcast DROP is_enabled');
}
}

View File

@ -52,6 +52,9 @@ class Podcast implements Interfaces\IdentifiableEntityInterface
#[Assert\NotBlank]
protected string $description;
#[ORM\Column]
protected bool $is_enabled = true;
#[ORM\Column(type: 'json', nullable: true)]
protected ?array $branding_config = null;
@ -150,6 +153,16 @@ class Podcast implements Interfaces\IdentifiableEntityInterface
return $this;
}
public function isEnabled(): bool
{
return $this->is_enabled;
}
public function setIsEnabled(bool $is_enabled): void
{
$this->is_enabled = $is_enabled;
}
public function getBrandingConfig(): PodcastBrandingConfiguration
{
return new PodcastBrandingConfiguration((array)$this->branding_config);