fix: duplicate NS violates unique constraint

This commit is contained in:
Maël Gangloff 2024-11-02 16:25:01 +01:00
parent 79a5a1d35a
commit 500b901b7a
No known key found for this signature in database
GPG Key ID: 11FDC81C24A7F629

View File

@ -315,19 +315,20 @@ readonly class RDAPService
'ldhName' => strtolower($rdapNameserver['ldhName']), 'ldhName' => strtolower($rdapNameserver['ldhName']),
]); ]);
$domainNS = $domain->getNameservers()->findFirst(fn (int $key, Nameserver $ns) => $ns->getLdhName() === $rdapNameserver['ldhName']); $existingDomainNS = $domain->getNameservers()->findFirst(fn (int $key, Nameserver $ns) => $ns->getLdhName() === $rdapNameserver['ldhName']);
if (null !== $domainNS) { if (null !== $existingDomainNS) {
$nameserver = $domainNS; $nameserver = $existingDomainNS;
} } elseif (null === $nameserver) {
if (null === $nameserver) {
$nameserver = new Nameserver(); $nameserver = new Nameserver();
} }
$nameserver->setLdhName($rdapNameserver['ldhName']); $nameserver->setLdhName($rdapNameserver['ldhName']);
if (!array_key_exists('entities', $rdapNameserver) || !is_array($rdapNameserver['entities'])) { if (!array_key_exists('entities', $rdapNameserver) || !is_array($rdapNameserver['entities'])) {
$domain->addNameserver($nameserver); if (!$domain->getNameservers()->contains($nameserver)) {
$domain->addNameserver($nameserver);
}
continue; continue;
} }
@ -365,7 +366,9 @@ readonly class RDAPService
->setRoles($roles)); ->setRoles($roles));
} }
$domain->addNameserver($nameserver); if (!$domain->getNameservers()->contains($nameserver)) {
$domain->addNameserver($nameserver);
}
} }
} else { } else {
$this->logger->warning('The domain name {idnDomain} has no nameservers.', [ $this->logger->warning('The domain name {idnDomain} has no nameservers.', [