feat(usernames): update unique constraint to composite with type and provider
- Remove single unique constraint on username - Add composite unique constraint on username, username_type, and provider_type - Update Filament username form validation with custom unique rule - Add descriptive validation message for duplicate usernames
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('usernames', function (Blueprint $table) {
|
||||
// Drop the existing unique constraint on 'username' column
|
||||
$table->dropUnique('usernames_username_unique');
|
||||
|
||||
// Add a composite unique constraint on username, username_type, and provider_type
|
||||
// This allows the same username with different type combinations
|
||||
$table->unique(['username', 'username_type', 'provider_type'], 'usernames_username_type_provider_unique');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('usernames', function (Blueprint $table) {
|
||||
// Drop the composite unique constraint
|
||||
$table->dropUnique('usernames_username_type_provider_unique');
|
||||
|
||||
// Restore the original single unique constraint on 'username'
|
||||
$table->unique('username', 'usernames_username_unique');
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user