"""Pydantic schemas for CoordWorkflow."""

from datetime import datetime
from typing import Optional
from uuid import UUID

from pydantic import BaseModel, Field


class CoordWorkflowCreate(BaseModel):
    """Input schema for creating a workflow."""

    project_key: str = Field(..., description="Project namespace slug", max_length=200)
    name: str = Field(..., description="Short workflow identifier", max_length=200)
    description: Optional[str] = Field(None, description="Freeform description, markdown ok")
    status: str = Field("planning", description="Status: planning, active, blocked, completed, cancelled")
    created_by: str = Field(..., description="Creating session identifier", max_length=200)


class CoordWorkflowUpdate(BaseModel):
    """Input schema for updating a workflow. All fields optional."""

    name: Optional[str] = Field(None, max_length=200)
    description: Optional[str] = None
    status: Optional[str] = Field(None, description="Status: planning, active, blocked, completed, cancelled")
    completed_at: Optional[datetime] = None


class CoordWorkflowResponse(BaseModel):
    """Output schema for a workflow."""

    id: UUID
    project_key: str
    name: str
    description: Optional[str]
    status: str
    created_by: str
    completed_at: Optional[datetime]
    created_at: datetime
    updated_at: datetime

    model_config = {"from_attributes": True}
