from datetime import datetime

from pydantic import BaseModel, ConfigDict, Field

from app.schemas.product import ProductCostBreakdown


class ScenarioCreate(BaseModel):
    model_config = ConfigDict(extra="forbid")
    name: str = Field(min_length=1, max_length=255)
    description: str | None = Field(default=None, max_length=2000)
    overrides: dict = Field(default_factory=dict)


class ScenarioRead(BaseModel):
    id: int
    name: str
    status: str
    description: str | None
    overrides: dict
    created_at: datetime
    model_config = ConfigDict(from_attributes=True)


class ScenarioRunResponse(BaseModel):
    scenario: ScenarioRead
    results: list[ProductCostBreakdown]
