from typing import Optional
from datetime import datetime
from pydantic import BaseModel, Field, ConfigDict


class ComandoScreenshotCreate(BaseModel):
    computador_id: str = Field(..., description="ID do computador")
    solicitante: Optional[str] = Field(
                                None,
                                description="ID de quem solicitou"
                                )


class ComandoScreenshotUpdate(BaseModel):
    status: str = Field(
        ...,
        description="Status do comando: pending, completed, error",
    )
    screenshot_url: Optional[str] = Field(
        None, description="URL do screenshot após upload")
    error_message: Optional[str] = Field(
        None, description="Mensagem de erro caso tenha falhado")


class ComandoScreenshotResponse(BaseModel):
    id: int
    computador_id: str
    solicitante: Optional[str]
    status: str
    screenshot_url: Optional[str]
    error_message: Optional[str]
    created_at: datetime
    updated_at: datetime

    model_config = ConfigDict(
        from_attributes=True,
        validate_assignment=True,
    )
