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

@@ -6,8 +6,10 @@ namespace Database\Factories\FormBuilder;
use App\Enums\FormBuilder\FormFieldBindingMode;
use App\Enums\FormBuilder\FormFieldType;
use App\Enums\FormBuilder\FormFieldValidationRuleType;
use App\Models\FormBuilder\FormFieldBinding;
use App\Models\FormBuilder\FormFieldLibrary;
use App\Models\FormBuilder\FormFieldValidationRule;
use App\Models\Organisation;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
@@ -71,4 +73,21 @@ final class FormFieldLibraryFactory extends Factory
->create();
});
}
/**
* Attach a validation-rule row in `form_field_validation_rules` after
* the library entry 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 (FormFieldLibrary $library) use ($type, $parameters): void {
FormFieldValidationRule::factory()
->forLibrary($library)
->ofType($type, $parameters)
->create();
});
}
}