"""Pydantic models for outbox events.""" from __future__ import annotations from datetime import datetime from typing import Any from pydantic import BaseModel, ConfigDict, Field class AbacusOutbox(BaseModel): """Outbox event model.""" model_config = ConfigDict(extra='ignore') abacus_outbox_id: int = Field(..., description='Primary key') target_type: str = Field(..., description='Entity type') target_id: int = Field(..., description='Target entity ID') event_type: str = Field(..., description='Event type') correlation_id: str | None = Field(None, description='Correlation ID') details: Any = Field(None, description='Event details') status: str = Field(..., description='Event status') retry_count: int = Field(..., description='Retry count') max_retries: int = Field(..., description='Max retries') created_at: datetime = Field( ..., description='When the event was created in the outbox' ) processed_at: datetime | None = Field( None, description='When the event was processed' )