Events¶
Events let applications register sync or async handlers around ORM lifecycle operations.
ormdantic.events.EventRegistry
¶
EventRegistry()
Store and dispatch sync or async event handlers.
Create an empty event registry.
Source code in ormdantic/events.py
def __init__(self) -> None:
"""Create an empty event registry."""
self._handlers: dict[str, list[EventHandler]] = defaultdict(list)
on
¶
on(event, handler)
Register a handler for an event and return the handler.
Source code in ormdantic/events.py
def on(self, event: str, handler: EventHandler) -> EventHandler:
"""Register a handler for an event and return the handler."""
self._handlers[event].append(handler)
return handler
off
¶
off(event, handler)
Remove a previously registered event handler.
Source code in ormdantic/events.py
def off(self, event: str, handler: EventHandler) -> None:
"""Remove a previously registered event handler."""
if handler in self._handlers.get(event, []):
self._handlers[event].remove(handler)
clear
¶
clear(event=None)
Clear handlers for one event or for all events.
Source code in ormdantic/events.py
def clear(self, event: str | None = None) -> None:
"""Clear handlers for one event or for all events."""
if event is None:
self._handlers.clear()
else:
self._handlers.pop(event, None)
dispatch
async
¶
dispatch(event, **payload)
Dispatch an event payload to all registered handlers.
Source code in ormdantic/events.py
async def dispatch(self, event: str, **payload: Any) -> None:
"""Dispatch an event payload to all registered handlers."""
for handler in self._handlers.get(event, []):
result = handler(**payload)
if inspect.isawaitable(result):
await result