"""Modèles de données pour la synchronisation CalDAV.""" from __future__ import annotations from enum import StrEnum from pydantic import BaseModel, Field from pronote_sync.models.agenda import Lesson, SchoolEvent from pronote_sync.models.homework import Homework class CalDAVSyncStatus(StrEnum): """Statut de synchronisation CalDAV.""" SUCCESS = "success" FAILED = "failed" SKIPPED = "skipped" class CalDAVSyncPlan(BaseModel): """Plan de synchronisation CalDAV.""" lessons_to_add: list[Lesson] = Field(default_factory=list) lessons_to_update: list[Lesson] = Field(default_factory=list) lessons_to_remove: list[str] = Field(default_factory=list, description="Liste d'UID") homeworks_to_add: list[Homework] = Field(default_factory=list) homeworks_to_update: list[Homework] = Field(default_factory=list) homeworks_to_remove: list[str] = Field(default_factory=list, description="Liste d'UID") school_events_to_add: list[SchoolEvent] = Field(default_factory=list) school_events_to_update: list[SchoolEvent] = Field(default_factory=list) school_events_to_remove: list[str] = Field(default_factory=list, description="Liste d'UID") class CalDAVSyncResult(BaseModel): """Résultat d'une synchronisation CalDAV (mutable).""" status: CalDAVSyncStatus = Field(..., description="Statut global") added: int = Field(0, ge=0, description="Nombre d'événements ajoutés") updated: int = Field(0, ge=0, description="Nombre d'événements mis à jour") removed: int = Field(0, ge=0, description="Nombre d'événements supprimés") errors: list[str] = Field(default_factory=list, description="Liste des erreurs")