"""
Schémas Pydantic pour les niveaux d'un projet
"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime


class NiveauBase(BaseModel):
    """Schéma de base pour un niveau"""
    nom: str = Field(..., min_length=1, max_length=50)
    ordre: int = Field(default=0)


class NiveauCreate(NiveauBase):
    """Schéma pour créer un niveau"""
    projet_id: int


class NiveauUpdate(BaseModel):
    nom: Optional[str] = None
    ordre: Optional[int] = None
    date_reception_armatures: Optional[datetime] = None
    armaturier: Optional[str] = None
    date_livraison_chantier: Optional[datetime] = None


class NiveauResponse(NiveauBase):
    id: int
    projet_id: int
    date_creation: datetime
    date_reception_armatures: Optional[datetime] = None
    armaturier: Optional[str] = None
    date_livraison_chantier: Optional[datetime] = None

    class Config:
        from_attributes = True
