Changeset 918474d in flexoentity


Ignore:
Timestamp:
11/29/25 18:38:36 (7 weeks ago)
Author:
Enrico Schwass <ennoausberlin@…>
Branches:
master
Children:
4f91fed
Parents:
df459f7
Message:

add EntityRegistry

Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • flexoentity/__init__.py

    rdf459f7 r918474d  
    1717from .domain_manager import DomainManager, DuplicateDomainError
    1818from .flexo_signature import FlexoSignature, CertificateReference
     19from .entity_registry import EntityRegistry
    1920from .signing_backends import get_signing_backend
    2021
     
    3031    "FlexoCollection",
    3132    "FlexoSignature",
     33    "EntityRegistry",
    3234    "CertificateReference",
    3335    "get_signing_backend",
  • flexoentity/domain_manager.py

    rdf459f7 r918474d  
    3232    """
    3333
    34     def __init__(self, domains: Iterable[Domain] | None = None):
     34    def __init__(self, registry):
    3535        # store is a general-purpose collection
    3636        self._store = FlexoCollection()
    37 
    38         if domains:
    39             for dom in domains:
    40                 self.add(dom)
     37        self._registry = registry
    4138
    4239    # ---------------------------------------------------------------
     
    6562        return result
    6663
    67     def has(self, domain_id: str) -> bool:
    68         """Check if a domain exists."""
    69         return self._store.has(domain_id)
     64    def can_delete(self, domain_id):
     65        return not any(self._registry.entities_by_domain(domain_id))
     66
     67    def delete(self, domain_id):
     68        if not self.can_delete(domain_id):
     69            raise ValueError(f"Domain {domain_id} is still referenced.")
     70        self.remove(domain_id)
    7071
    7172    def remove(self, domain_id: str) -> None:
    7273        """Remove a domain (rarely used, mostly for tests)."""
    73         if not self._store.has(domain_id):
     74        if domain_id not in self._store:
    7475            raise DomainNotFoundError(domain_id)
    7576        self._store.remove(domain_id)
     
    7778    def all(self) -> list[Domain]:
    7879        """List of all domains."""
    79         return list(self._store.values())
     80        return self._store.entities()
     81
     82    def all_domain_ids(self):
     83        return self._store.ids()
    8084
    8185    def clear(self):
     
    108112
    109113    def __contains__(self, domain_id: str) -> bool:
    110         return self.has(domain_id)
     114        return domain_id in self._store
    111115
    112116    def __repr__(self) -> str:
  • flexoentity/flexo_collection.py

    rdf459f7 r918474d  
    8282    # Additional public helpers (unchanged)
    8383    # ------------------------------------------------------------------
    84 
    8584    def entities(self):
    8685        """Return all entities as a list."""
  • tests/conftest.py

    rdf459f7 r918474d  
    33from pathlib import Path
    44from datetime import datetime
    5 from flexoentity import Domain, FlexoSignature, DomainManager
     5from flexoentity import Domain, FlexoSignature, DomainManager, EntityRegistry
    66from flexoentity import get_signing_backend, CertificateReference
    77
     
    3030@pytest.fixture
    3131def sample_domain_manager():
    32     return DomainManager()
     32    return DomainManager(EntityRegistry())
    3333
    3434# ─────────────────────────────────────────────────────────────
Note: See TracChangeset for help on using the changeset viewer.