import uuid
from datetime import datetime
from typing import Optional

from pydantic import BaseModel, ConfigDict

from app.models.soil_profile import DrainageRate, SoilType, WaterRetention


class SoilProfileBase(BaseModel):
    name: str
    soil_type: SoilType
    ph_level: float
    organic_matter_percent: float
    drainage_rate: DrainageRate
    water_retention: WaterRetention
    native_nitrogen: float
    native_phosphorus: float
    native_potassium: float
    salinity_level: float
    temperature_range_min: float
    temperature_range_max: float
    description: Optional[str] = None
    climate_zone: str


class SoilProfileResponse(SoilProfileBase):
    id: uuid.UUID
    created_at: datetime
    updated_at: datetime

    model_config = ConfigDict(from_attributes=True)
