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:
idevakk
2025-12-08 10:57:56 -08:00
parent 8d8657cc5c
commit 1c4298cdaf
2 changed files with 52 additions and 1 deletions

View File

@@ -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)