feat(form-builder): form_field_validation_rules table + polymorphic owner + scope + cascade

This commit is contained in:
2026-04-24 22:01:36 +02:00
parent 87fc964ead
commit fedaed1b32
17 changed files with 798 additions and 37 deletions

View File

@@ -7,8 +7,10 @@ namespace Database\Factories\FormBuilder;
use App\Enums\FormBuilder\FormFieldBindingMode;
use App\Enums\FormBuilder\FormFieldDisplayWidth;
use App\Enums\FormBuilder\FormFieldType;
use App\Enums\FormBuilder\FormFieldValidationRuleType;
use App\Models\FormBuilder\FormField;
use App\Models\FormBuilder\FormFieldBinding;
use App\Models\FormBuilder\FormFieldValidationRule;
use App\Models\FormBuilder\FormSchema;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
@@ -100,4 +102,21 @@ final class FormFieldFactory extends Factory
->create();
});
}
/**
* Attach a validation-rule row in `form_field_validation_rules` after
* the field is persisted. Replaces populating the legacy
* `validation_rules` JSON column which WS-5b commit 5 drops.
*
* @param array<string, mixed> $parameters
*/
public function withValidationRule(FormFieldValidationRuleType $type, array $parameters): static
{
return $this->afterCreating(function (FormField $field) use ($type, $parameters): void {
FormFieldValidationRule::factory()
->forField($field)
->ofType($type, $parameters)
->create();
});
}
}