feat(database): remove 'database_rules' from WebsiteTypeExtra configurations and related tests

This commit is contained in:
2026-07-31 09:28:12 -03:00
parent 6b3a12b624
commit cbb7b1c3a1
5 changed files with 32 additions and 78 deletions

View File

@@ -12,7 +12,6 @@ use App\Domains\Tenant\Models\WebsiteType;
use App\Domains\Tenant\Models\WebsiteTypeExtra;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
@@ -115,8 +114,6 @@ class WebsiteExtraService
$config,
$requestRoot
);
$this->validateDatabaseConfig($definition, $transformedConfig, $requestRoot);
$tenant->websiteExtras()->create([
'website_type_extra_id' => $definition->id,
'config' => $transformedConfig,
@@ -161,7 +158,6 @@ class WebsiteExtraService
return DB::transaction(function () use ($tenant, $definition, $config): WebsiteExtra {
$transformedConfig = $this->applyTransforms($tenant, $definition, $config, 'config');
$this->validateDatabaseConfig($definition, $transformedConfig, 'config');
return $tenant->websiteExtras()->updateOrCreate(
['website_type_extra_id' => $definition->id],
@@ -342,33 +338,4 @@ class WebsiteExtraService
return $attachment->id;
}
private function validateDatabaseConfig(
WebsiteTypeExtra $definition,
mixed $config,
string $requestRoot
): void {
$schemaRules = $definition->config_schema['database_rules'] ?? [];
$rules = [];
foreach ($schemaRules as $path => $pathRules) {
$attribute = $path === '$'
? 'config'
: 'config.'.ltrim(str_starts_with($path, '$.') ? substr($path, 2) : $path, '.');
$rules[$attribute] = $this->compileRules($pathRules);
}
$validator = Validator::make(['config' => $config], $rules);
if ($validator->fails()) {
$messages = [];
foreach ($validator->errors()->toArray() as $attribute => $errors) {
$suffix = $attribute === 'config' ? '' : substr($attribute, strlen('config'));
$messages["{$requestRoot}{$suffix}"] = $errors;
}
throw ValidationException::withMessages($messages);
}
}
}