from sqlalchemy import Column, String, Text, DateTime, Enum from datetime import datetime import enum from app.models.base import BaseModel class TaskStatus(str, enum.Enum): """Task status enum.""" TODO = "todo" IN_PROGRESS = "in_progress" COMPLETED = "completed" CANCELLED = "cancelled" class TaskPriority(str, enum.Enum): """Task priority enum.""" LOW = "low" MEDIUM = "medium" HIGH = "high" class Task(BaseModel): """Task model for task management.""" title = Column(String(200), index=True, nullable=False) description = Column(Text, nullable=True) due_date = Column(DateTime, nullable=True) status = Column( Enum(TaskStatus), default=TaskStatus.TODO, nullable=False, index=True ) priority = Column( Enum(TaskPriority), default=TaskPriority.MEDIUM, nullable=False, index=True ) completed_at = Column(DateTime, nullable=True) def mark_as_completed(self): """Mark the task as completed.""" self.status = TaskStatus.COMPLETED self.completed_at = datetime.utcnow()