Skip to content

Commit

Permalink
Refactor Validator to avoid repetition
Browse files Browse the repository at this point in the history
  • Loading branch information
Jean85 committed Oct 23, 2024
1 parent 238471c commit 4a89cd3
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions src/Tree/Mapping/Validator.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

namespace Gedmo\Tree\Mapping;

use Doctrine\ORM\Mapping\FieldMapping;
use Doctrine\Persistence\Mapping\ClassMetadata;
use Gedmo\Exception\InvalidMappingException;

Expand Down Expand Up @@ -97,7 +98,7 @@ public function isValidField($meta, $field)
{
$mapping = $meta->getFieldMapping($field);

return $mapping && in_array($mapping->type ?? $mapping['type'], self::VALID_TYPES, true);
return $mapping && in_array($this->getMappingType($mapping), self::VALID_TYPES, true);
}

/**
Expand All @@ -112,7 +113,7 @@ public function isValidFieldForPath($meta, $field)
{
$mapping = $meta->getFieldMapping($field);

return $mapping && in_array($mapping->type ?? $mapping['type'], $this->validPathTypes, true);
return $mapping && in_array($this->getMappingType($mapping), $this->validPathTypes, true);
}

/**
Expand All @@ -127,7 +128,7 @@ public function isValidFieldForPathSource($meta, $field)
{
$mapping = $meta->getFieldMapping($field);

return $mapping && in_array($mapping->type ?? $mapping['type'], $this->validPathSourceTypes, true);
return $mapping && in_array($this->getMappingType($mapping), $this->validPathSourceTypes, true);
}

/**
Expand All @@ -142,7 +143,7 @@ public function isValidFieldForPathHash($meta, $field)
{
$mapping = $meta->getFieldMapping($field);

return $mapping && in_array($mapping->type ?? $mapping['type'], $this->validPathHashTypes, true);
return $mapping && in_array($this->getMappingType($mapping), $this->validPathHashTypes, true);
}

/**
Expand All @@ -157,7 +158,7 @@ public function isValidFieldForLockTime($meta, $field)
{
$mapping = $meta->getFieldMapping($field);

return $mapping && ('date' === ($mapping->type ?? $mapping['type']) || 'datetime' === ($mapping->type ?? $mapping['type']) || 'timestamp' === ($mapping->type ?? $mapping['type']));
return $mapping && ('date' === $this->getMappingType($mapping) || 'datetime' === $this->getMappingType($mapping) || 'timestamp' === $this->getMappingType($mapping));
}

/**
Expand All @@ -172,7 +173,7 @@ public function isValidFieldForRoot($meta, $field)
{
$mapping = $meta->getFieldMapping($field);

return $mapping && in_array($mapping->type ?? $mapping['type'], $this->validRootTypes, true);
return $mapping && in_array($this->getMappingType($mapping), $this->validRootTypes, true);
}

/**
Expand Down Expand Up @@ -252,4 +253,16 @@ public function validateMaterializedPathTreeMetadata($meta, array $config)
throw new InvalidMappingException('Missing properties: '.implode(', ', $missingFields)." in class - {$meta->getName()}");
}
}

/**
* @param FieldMapping|array<string, scalar> $mapping
*/
private function getMappingType($mapping): string
{
if ($mapping instanceof FieldMapping) {
return $mapping->type;
}

return $mapping['type'];
}
}

0 comments on commit 4a89cd3

Please sign in to comment.