diff --git a/migrations/Version20231001125432.php b/migrations/Version20231001125432.php new file mode 100644 index 0000000..21a689b --- /dev/null +++ b/migrations/Version20231001125432.php @@ -0,0 +1,37 @@ +addSql('CREATE SEQUENCE release_metadata_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('CREATE TABLE release_metadata (id INT NOT NULL, release_id INT NOT NULL, year INT DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_1414EF75B12A727D ON release_metadata (release_id)'); + $this->addSql('ALTER TABLE release_metadata ADD CONSTRAINT FK_1414EF75B12A727D FOREIGN KEY (release_id) REFERENCES release (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('DROP SEQUENCE release_metadata_id_seq CASCADE'); + $this->addSql('ALTER TABLE release_metadata DROP CONSTRAINT FK_1414EF75B12A727D'); + $this->addSql('DROP TABLE release_metadata'); + } +} diff --git a/src/Entity/Release.php b/src/Entity/Release.php index 9cf730e..0cbe458 100644 --- a/src/Entity/Release.php +++ b/src/Entity/Release.php @@ -25,6 +25,9 @@ class Release #[ORM\JoinColumn(nullable: false)] private ?User $owner = null; + #[ORM\OneToOne(mappedBy: 'release', cascade: ['persist', 'remove'])] + private ?ReleaseMetadata $metadata = null; + public function __construct() { $this->artists = new ArrayCollection(); @@ -82,4 +85,21 @@ class Release return $this; } + + public function getMetadata(): ?ReleaseMetadata + { + return $this->metadata; + } + + public function setMetadata(ReleaseMetadata $metadata): static + { + // set the owning side of the relation if necessary + if ($metadata->getRelease() !== $this) { + $metadata->setRelease($this); + } + + $this->metadata = $metadata; + + return $this; + } } diff --git a/src/Entity/ReleaseMetadata.php b/src/Entity/ReleaseMetadata.php new file mode 100644 index 0000000..b9ed003 --- /dev/null +++ b/src/Entity/ReleaseMetadata.php @@ -0,0 +1,57 @@ +id; + } + + public function getRelease(): ?Release + { + return $this->release; + } + + public function setRelease(Release $release): static + { + $this->release = $release; + + return $this; + } + + public function getYear(): ?int + { + return $this->year; + } + + public function setYear(?int $year): static + { + $this->year = $year; + + return $this; + } +} diff --git a/src/Repository/ReleaseMetadataRepository.php b/src/Repository/ReleaseMetadataRepository.php new file mode 100644 index 0000000..362504d --- /dev/null +++ b/src/Repository/ReleaseMetadataRepository.php @@ -0,0 +1,23 @@ + + * + * @method ReleaseMetadata|null find($id, $lockMode = null, $lockVersion = null) + * @method ReleaseMetadata|null findOneBy(array $criteria, array $orderBy = null) + * @method ReleaseMetadata[] findAll() + * @method ReleaseMetadata[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class ReleaseMetadataRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, ReleaseMetadata::class); + } +}