From 1ebf86b510c0b57b1de752d1162053bf0a7b2244 Mon Sep 17 00:00:00 2001 From: socksprox Date: Sat, 29 Nov 2025 13:34:09 +0100 Subject: [PATCH] fix: do not merge traffic from different nodes --- ...000_update_stat_user_unique_constraint.php | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 database/migrations/2025_11_29_120000_update_stat_user_unique_constraint.php diff --git a/database/migrations/2025_11_29_120000_update_stat_user_unique_constraint.php b/database/migrations/2025_11_29_120000_update_stat_user_unique_constraint.php new file mode 100644 index 0000000..6ae1b83 --- /dev/null +++ b/database/migrations/2025_11_29_120000_update_stat_user_unique_constraint.php @@ -0,0 +1,55 @@ +dropUnique('server_rate_user_id_record_at'); + + // Add new unique constraint including server_id + // Note: NULL server_id values (legacy) are treated as distinct in MySQL + $table->unique( + ['user_id', 'server_id', 'server_rate', 'record_at', 'record_type'], + 'stat_user_unique_idx' + ); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + if (config('database.default') === 'sqlite') { + return; + } + + Schema::table('v2_stat_user', function (Blueprint $table) { + // Drop new constraint + $table->dropUnique('stat_user_unique_idx'); + + // Restore original constraint + $table->unique( + ['server_rate', 'user_id', 'record_at'], + 'server_rate_user_id_record_at' + ); + }); + } +};