18 lines
676 B
Python
18 lines
676 B
Python
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.core.contracts import DomainEvent
|
|
from app.model.platform import DomainEventOutbox
|
|
|
|
|
|
class OutboxRepository:
|
|
def __init__(self, session: AsyncSession) -> None:
|
|
self.session = session
|
|
|
|
async def append(self, event: DomainEvent) -> None:
|
|
self.session.add(DomainEventOutbox(
|
|
event_id=event.event_id, event_type=event.event_type,
|
|
aggregate_type=event.aggregate_type, aggregate_id=event.aggregate_id,
|
|
trace_id=event.trace_id, payload=event.payload, occurred_at=event.occurred_at,
|
|
created_at=event.occurred_at, updated_at=event.occurred_at,
|
|
))
|