fix(timetable): null-on-delete advance_submissions per RFC §5.4 retention
advance_submissions.advance_section_id FK changed from cascadeOnDelete
to nullOnDelete; column made nullable. Aligns implementation with
RFC v0.2 §5.4 audit-immutability ("submissions remain for retention
compliance") — when ArtistEngagementObserver::deleted hard-deletes a
section, its submissions persist as orphans rather than disappearing.
Migration edited in place (branch unpushed, dev-only). Observer
docblock + test assertion updated to match. Removed pre-existing
follow-up comment that documented the deviation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ return new class extends Migration
|
||||
{
|
||||
Schema::create('advance_submissions', function (Blueprint $table) {
|
||||
$table->ulid('id')->primary();
|
||||
$table->foreignUlid('advance_section_id')->constrained()->cascadeOnDelete();
|
||||
$table->foreignUlid('advance_section_id')->nullable()->constrained()->nullOnDelete();
|
||||
$table->string('submitted_by_name');
|
||||
$table->string('submitted_by_email');
|
||||
$table->timestamp('submitted_at');
|
||||
|
||||
@@ -55,7 +55,7 @@ DROP TABLE IF EXISTS `advance_submissions`;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `advance_submissions` (
|
||||
`id` char(26) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`advance_section_id` char(26) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`advance_section_id` char(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`submitted_by_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`submitted_by_email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`submitted_at` timestamp NOT NULL,
|
||||
@@ -68,7 +68,7 @@ CREATE TABLE `advance_submissions` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `advance_submissions_reviewed_by_foreign` (`reviewed_by`),
|
||||
KEY `advance_submissions_advance_section_id_status_index` (`advance_section_id`,`status`),
|
||||
CONSTRAINT `advance_submissions_advance_section_id_foreign` FOREIGN KEY (`advance_section_id`) REFERENCES `advance_sections` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `advance_submissions_advance_section_id_foreign` FOREIGN KEY (`advance_section_id`) REFERENCES `advance_sections` (`id`) ON DELETE SET NULL,
|
||||
CONSTRAINT `advance_submissions_reviewed_by_foreign` FOREIGN KEY (`reviewed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
Reference in New Issue
Block a user