fix(backend): улучшить уникальность идентификаторов сертификатов

This commit is contained in:
Denozordec
2026-05-12 20:29:57 +07:00
parent 60024facab
commit 500a543045
+16 -1
View File
@@ -53,6 +53,11 @@ export function mapRosCertificateRow(
const name = (row.name ?? "").trim()
if (!name) return null
const rosId = (row[".id"] ?? "").trim()
const fingerprint = (row.fingerprint ?? "").trim()
const serialNumber = (row["serial-number"] ?? "").trim()
const stableId = rosId || fingerprint || serialNumber || name
const { revoked, expired: expiredFlag } = parseFlags(row.flags)
const validFrom = parseRosDate(row["invalid-before"])
const validUntil = parseRosDate(row["invalid-after"])
@@ -68,7 +73,7 @@ export function mapRosCertificateRow(
const keySize = Number.parseInt(String(row["key-size"] ?? "0"), 10)
return {
id: `${serverId}:${name}`,
id: `${serverId}:${stableId}`,
name,
serverId: String(serverId),
serverName,
@@ -91,7 +96,17 @@ export function mapRosCertificates(
serverName: string,
rows: RosCertificateRow[],
): CertificateDto[] {
const seen = new Set<string>()
return rows
.map((row) => mapRosCertificateRow(serverId, serverName, row))
.filter((row): row is CertificateDto => row != null)
.map((cert, index) => {
if (!seen.has(cert.id)) {
seen.add(cert.id)
return cert
}
const uniqueId = `${cert.id}#${index}`
seen.add(uniqueId)
return { ...cert, id: uniqueId }
})
}