diff --git a/database/migrations/2026_04_12_000000_add_unique_constraint_to_train_checkins.php b/database/migrations/2026_04_12_000000_add_unique_constraint_to_train_checkins.php new file mode 100644 index 000000000..c0272ff97 --- /dev/null +++ b/database/migrations/2026_04_12_000000_add_unique_constraint_to_train_checkins.php @@ -0,0 +1,58 @@ + 1' + ); + + foreach ($duplicates as $duplicate) { + $toDelete = DB::table('train_checkins') + ->where('user_id', $duplicate->user_id) + ->where('trip_id', $duplicate->trip_id) + ->where('origin_stopover_id', $duplicate->origin_stopover_id) + ->where('id', '!=', $duplicate->keep_id) + ->pluck('status_id'); + + DB::table('statuses') + ->whereIn('id', $toDelete) + ->delete(); + } + + Schema::table('train_checkins', static function (Blueprint $table) { + $table->unique( + ['user_id', 'trip_id', 'origin_stopover_id'], + 'user_trip_origin_stopover_unique' + ); + }); + } + + public function down(): void + { + Schema::table('train_checkins', static function (Blueprint $table) { + $table->dropUnique('user_trip_origin_stopover_unique'); + }); + } +};