Don't allow adding a config entry with colliding unique_id

This commit is contained in:
Erik 2024-10-03 12:39:07 +02:00
parent ce94073321
commit 0fec78ea75

View File

@ -1680,9 +1680,12 @@ class ConfigEntryItems(UserDict[str, ConfigEntry]):
self.check_unique_id(entry)
self._domain_index.setdefault(entry.domain, []).append(entry)
if entry.unique_id is not None:
self._domain_unique_id_index.setdefault(entry.domain, {}).setdefault(
entry.unique_id, []
).append(entry)
domain_entries = self._domain_unique_id_index.setdefault(entry.domain, {})
if entry.unique_id in domain_entries:
raise ValueError(
f"{entry.domain} config entry with unique id {entry.unique_id} already exists"
)
domain_entries.setdefault(entry.unique_id, []).append(entry)
def _unindex_entry(self, entry_id: str) -> None:
"""Unindex an entry."""