From 5097e61339008fe67a274c844be785c73b9df8b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20St=C3=B6ckel?= Date: Sun, 12 Apr 2026 19:00:11 +0200 Subject: [PATCH] :card_file_box: delete duplicate checkins; add unique key fixes #2876 --- ...dd_unique_constraint_to_train_checkins.php | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 database/migrations/2026_04_12_000000_add_unique_constraint_to_train_checkins.php 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'); + }); + } +};