from datetime import datetime from enum import Enum from typing import Optional from uuid import UUID, uuid4 from sqlmodel import SQLModel, Field class TaskStatus(str, Enum): TODO = "A faire" IN_PROGRESS = "En cours" DONE = "Termine" class TaskBase(SQLModel): title: str = Field(index=True, min_length=1, max_length=100) description: Optional[str] = Field(default=None) status: TaskStatus = Field(default=TaskStatus.TODO) class TaskCreate(TaskBase): pass class TaskUpdate(SQLModel): title: Optional[str] = Field(default=None, min_length=1, max_length=100) description: Optional[str] = None status: Optional[TaskStatus] = None class TaskResponse(TaskBase): id: UUID created_at: datetime updated_at: datetime class Task(TaskBase, table=True): __tablename__ = "tasks" id: UUID = Field(default_factory=uuid4, primary_key=True, index=True) created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False) updated_at: datetime = Field(default_factory=datetime.utcnow, nullable=False)