feat(database): remove 'database_rules' from WebsiteTypeExtra configurations and related tests
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user