From e59b1ea2d12ad86aeae37a385f02033997490b42 Mon Sep 17 00:00:00 2001 From: Dave Smith-Hayes <me@davesmithhayes.com> Date: Wed, 16 Apr 2025 22:11:12 -0400 Subject: [PATCH] Add episode factory. --- app/src/Domain/Entity/Episode.php | 2 ++ app/src/Domain/Factory/EpisodeFactory.php | 42 +++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 app/src/Domain/Factory/EpisodeFactory.php diff --git a/app/src/Domain/Entity/Episode.php b/app/src/Domain/Entity/Episode.php index 9021224..e49e9c6 100644 --- a/app/src/Domain/Entity/Episode.php +++ b/app/src/Domain/Entity/Episode.php @@ -4,10 +4,12 @@ namespace Slovocast\Domain\Entity; use DateTimeImmutable; use Slovocast\Domain\Entity as EntityTrait; +use Slovocast\Domain\Record as RecordTrait; class Episode { use EntityTrait; + use RecordTrait; private string $duration; diff --git a/app/src/Domain/Factory/EpisodeFactory.php b/app/src/Domain/Factory/EpisodeFactory.php new file mode 100644 index 0000000..91627a7 --- /dev/null +++ b/app/src/Domain/Factory/EpisodeFactory.php @@ -0,0 +1,42 @@ +<?php + +namespace Slovocast\Domain\Factory; + +use Slovocast\Domain\Entity\Episode; +use Slovocast\Domain\FactoryInterface; + +class EpisodeFactory implements FactoryInterface +{ + public static function fromArray(array $props): Episode + { + $episode = new Episode( + $props['title'], + $props['link'], + (int) $props['length'], + $props['description'], + $props['serialNumber'], + (bool) $props['explicit'], + $props['publishedDate'], + $props['episodeType'] + ); + + if ($props['id']) { + $episode->setId($props['id']); + } + + if ($props['created_at']) { + $episode->setCreatedAt($props['createdAt']); + } + + if ($props['updated_id']) { + $episode->setUpdatedAt($props['updatedAt']); + } + + return $episode; + } + + public static function toArray(Episode $episode): array + { + return []; + } +}