from typing import Optional from datetime import datetime, date from pydantic import BaseModel, Field from app.models.claim import ClaimStatus # Shared properties class ClaimBase(BaseModel): claim_number: str policy_id: int incident_date: date description: str claim_amount: float = Field(..., gt=0) status: ClaimStatus = ClaimStatus.SUBMITTED settlement_amount: Optional[float] = Field(None, ge=0) settlement_date: Optional[date] = None # Properties to receive via API on creation class ClaimCreate(ClaimBase): pass # Properties to receive via API on update class ClaimUpdate(BaseModel): description: Optional[str] = None claim_amount: Optional[float] = Field(None, gt=0) status: Optional[ClaimStatus] = None settlement_amount: Optional[float] = Field(None, ge=0) settlement_date: Optional[date] = None # Properties shared by models stored in DB class ClaimInDBBase(ClaimBase): id: int report_date: datetime created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True # Additional properties to return via API class Claim(ClaimInDBBase): pass # Additional properties stored in DB class ClaimInDB(ClaimInDBBase): pass