2025-05-19 22:32:24 +00:00

42 lines
1.1 KiB
Python

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()