"""Pydantic models for Lambda event validation.""" from typing import Literal, Optional from pydantic import BaseModel, ConfigDict, Field from src.enums import EventType, TargetType, UploadType class AdjustmentFileInitializeEventData(BaseModel): """Metadata section for AdjustmentFileInitializeEvent.""" model_config = ConfigDict(extra='ignore') upload_type: Literal[UploadType.ADJUSTMENTS] = Field( ..., description='Upload type (e.g., adjustments)' ) class AdjustmentFileInitializeEventMetadata(BaseModel): """Metadata section for AdjustmentFileInitializeEvent.""" model_config = ConfigDict(extra='ignore') correlation_id: Optional[str] = Field( None, description='Correlation ID for tracing' ) target_id: int = Field(..., description='Primary key of target entity') target_type: Literal[TargetType.FILE_UPLOAD] = Field( ..., description='Entity type (e.g., file_upload)' ) class AdjustmentFileInitializeEventDetail(BaseModel): """Event detail section for AdjustmentFileInitializeEvent.""" model_config = ConfigDict(extra='ignore') metadata: AdjustmentFileInitializeEventMetadata = Field( ..., description='Event metadata' ) data: AdjustmentFileInitializeEventData = Field( ..., description='Event business data' ) class AdjustmentFileInitializeEvent(BaseModel): """Lambda event for adjustment file initialization.""" model_config = ConfigDict(extra='ignore', populate_by_name=True) detail_type: Literal[EventType.FILE_UPLOAD_COMPLETED] = Field( ..., description='Event type (e.g., file_upload.completed)', alias='detail-type', ) detail: AdjustmentFileInitializeEventDetail = Field( ..., description='Event details' )