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' + ); + }); + } +};