"""Schémas Phase 8 — Votes et sondages.""" from pydantic import BaseModel from datetime import datetime from uuid import UUID from typing import Optional # ── G6 Lancer un sondage ── class OptionCreate(BaseModel): texte: str class SondageCreate(BaseModel): titre: str description: Optional[str] = None type: str = "oui_non" # oui_non, choix_multiple, unanimite date_ouverture: datetime date_fermeture: datetime options: list[OptionCreate] = [] class OptionOut(BaseModel): id: UUID texte: str ordre: int nb_votes: int = 0 model_config = {"from_attributes": True} class SondageOut(BaseModel): id: UUID titre: str description: Optional[str] = None type: str cree_par_prenom: Optional[str] = None date_ouverture: datetime date_fermeture: datetime statut: str options: list[OptionOut] = [] total_votes: int = 0 a_vote: bool = False # le membre courant a-t-il voté? model_config = {"from_attributes": True} class SondageUpdate(BaseModel): statut: Optional[str] = None # ouvert, ferme # ── C6 Voter ── class VoteCreate(BaseModel): option_id: UUID