feat(domains): update unique constraint to composite with type and provider
- Remove single unique constraint on domain name - Add composite unique constraint on name, domain_type, and provider_type - Update Filament domain form validation with custom unique rule - Add descriptive validation message for duplicate domains
This commit is contained in:
@@ -9,7 +9,9 @@ use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Components\ToggleButtons;
|
||||
use Filament\Infolists\Components\TextEntry;
|
||||
use Filament\Schemas\Components\Utilities\Get;
|
||||
use Filament\Schemas\Schema;
|
||||
use Illuminate\Validation\Rules\Unique;
|
||||
|
||||
class DomainForm
|
||||
{
|
||||
@@ -20,7 +22,19 @@ class DomainForm
|
||||
TextInput::make('name')
|
||||
->columnSpan(1)
|
||||
->helperText('Domain name: example.com')
|
||||
->required(),
|
||||
->required()
|
||||
->unique(
|
||||
table: 'domains',
|
||||
ignoreRecord: true,
|
||||
modifyRuleUsing: function (Unique $rule, Get $get) {
|
||||
return $rule
|
||||
->where('domain_type', $get('domain_type'))
|
||||
->where('provider_type', $get('provider_type'));
|
||||
},
|
||||
)
|
||||
->validationMessages([
|
||||
'unique' => 'The domain name already exists for this type and provider.',
|
||||
]),
|
||||
TextInput::make('daily_mailbox_limit')
|
||||
->integer()
|
||||
->minValue(1)
|
||||
|
||||
Reference in New Issue
Block a user