From cab2d2500002348c1e80dedac1019407fc9d27da Mon Sep 17 00:00:00 2001 From: Marijn Doeve Date: Sun, 24 May 2026 14:12:13 +0200 Subject: [PATCH] Add unique index constraint for `quiz_candidate` with soft delete support - Updated migration to include a unique index on `quiz_candidate` table that excludes soft-deleted records. - Adjusted `QuizCandidate` entity to reflect the new unique constraint with `deleted_at` condition. --- migrations/Version20260524121119.php | 30 ++++++++++++++++++++++++++++ src/Entity/QuizCandidate.php | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 migrations/Version20260524121119.php diff --git a/migrations/Version20260524121119.php b/migrations/Version20260524121119.php new file mode 100644 index 0000000..aacbd52 --- /dev/null +++ b/migrations/Version20260524121119.php @@ -0,0 +1,30 @@ +addSql('DROP INDEX uniq_ced2ffa291bd8781853cd175'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_CED2FFA291BD8781853CD175 ON quiz_candidate (candidate_id, quiz_id) WHERE deleted_at IS NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP INDEX UNIQ_CED2FFA291BD8781853CD175'); + $this->addSql('CREATE UNIQUE INDEX uniq_ced2ffa291bd8781853cd175 ON quiz_candidate (candidate_id, quiz_id)'); + } +} diff --git a/src/Entity/QuizCandidate.php b/src/Entity/QuizCandidate.php index 652dcfb..bb5b98f 100644 --- a/src/Entity/QuizCandidate.php +++ b/src/Entity/QuizCandidate.php @@ -14,7 +14,7 @@ use Tvdt\Repository\QuizCandidateRepository; #[Gedmo\SoftDeleteable] #[ORM\Entity(repositoryClass: QuizCandidateRepository::class)] -#[ORM\UniqueConstraint(columns: ['candidate_id', 'quiz_id'])] +#[ORM\UniqueConstraint(columns: ['candidate_id', 'quiz_id'], options: ['where' => 'deleted_at IS NULL'])] class QuizCandidate { use SoftDeleteableEntity;