| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- from typing import TYPE_CHECKING
- from pydantic import BaseModel, Field
- from core_events import EventDeliveryStatus, EventPublishContract, EventRecordContract
- from core_shared import JSONValue
- if TYPE_CHECKING:
- from app.db.models import EventRecord
- class EventPublishRequest(EventPublishContract):
- pass
- class EventRecordResponse(EventRecordContract):
- @classmethod
- def from_entity(cls, entity: "EventRecord") -> "EventRecordResponse":
- return cls.model_validate(entity, from_attributes=True)
- class EventDeliveryStatusUpdateRequest(BaseModel):
- tenant_id: str
- status: EventDeliveryStatus
- last_error_message: str | None = None
- class PendingEventClaimRequest(BaseModel):
- tenant_id: str
- limit: int = Field(default=100, ge=1, le=500)
- class EventBatchPublishRequest(BaseModel):
- events: list[EventPublishRequest] = Field(default_factory=list, min_length=1, max_length=500)
- class EventBatchPublishResponse(BaseModel):
- events: list[EventRecordResponse]
- count: int
- class EventStatsResponse(BaseModel):
- tenant_id: str
- counts_json: dict[str, JSONValue]
|