2025-05-18 19:36:06 +00:00

30 lines
1.0 KiB
Python

from datetime import datetime
from sqlalchemy import Boolean, Column, DateTime, Integer, String, Text
from sqlalchemy.sql import func
from app.db.base_class import Base
class Task(Base):
"""Task model representing a to-do item"""
id = Column(Integer, primary_key=True, index=True)
title = Column(String(255), nullable=False, index=True)
description = Column(Text, nullable=True)
is_completed = Column(Boolean, default=False)
# Priority: 1 (Low), 2 (Medium), 3 (High)
priority = Column(Integer, default=2)
# Audit timestamp fields
created_at = Column(DateTime, default=func.now(), nullable=False)
updated_at = Column(DateTime, default=func.now(), onupdate=func.now(), nullable=False)
completed_at = Column(DateTime, nullable=True)
# Optional due date
due_date = Column(DateTime, nullable=True)
def mark_as_completed(self) -> None:
"""Mark the task as completed and set the completion timestamp"""
self.is_completed = True
self.completed_at = datetime.utcnow()