Updated PersistenceShortUrlRelationResolver to prevent duplicated tags

This commit is contained in:
Alejandro Celaya
2021-04-10 10:16:09 +02:00
parent f30e922074
commit 823573cea7
2 changed files with 20 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ use Shlinkio\Shlink\Core\Entity\Domain;
use Shlinkio\Shlink\Core\Entity\Tag;
use function Functional\map;
use function Functional\unique;
class PersistenceShortUrlRelationResolver implements ShortUrlRelationResolverInterface
{
@@ -42,7 +43,9 @@ class PersistenceShortUrlRelationResolver implements ShortUrlRelationResolverInt
return new Collections\ArrayCollection();
}
$tags = unique($tags);
$repo = $this->em->getRepository(Tag::class);
return new Collections\ArrayCollection(map($tags, function (string $tagName) use ($repo): Tag {
$tag = $repo->findOneBy(['name' => $tagName]) ?? new Tag($tagName);
$this->em->persist($tag);