import uuid
from datetime import datetime
from typing import Any, Dict, Optional

from pydantic import BaseModel, ConfigDict

from app.schemas.plant import PlantResponse


class GraftCombinationBase(BaseModel):
    rootstock_id: uuid.UUID
    scion_id: uuid.UUID
    compatibility_score: float
    vigor_boost: float = 1.0
    yield_modifier: float = 1.0
    stress_tolerance_override: Dict[str, Any] = {}
    notes: Optional[str] = None
    source_reference: Optional[str] = None


class GraftCombinationResponse(GraftCombinationBase):
    id: uuid.UUID
    rootstock: PlantResponse
    scion: PlantResponse
    created_at: datetime
    updated_at: datetime

    model_config = ConfigDict(from_attributes=True)
