2025-06-27 16:41:30 +00:00

40 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, DateTime, Boolean, Text, ForeignKey, Enum
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from app.db.base import Base
import enum
class TaskStatus(str, enum.Enum):
PENDING = "pending"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
CANCELLED = "cancelled"
class TaskPriority(str, enum.Enum):
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
URGENT = "urgent"
class Task(Base):
__tablename__ = "tasks"
id = Column(Integer, primary_key=True, index=True)
title = Column(String, nullable=False)
description = Column(Text, nullable=True)
status = Column(Enum(TaskStatus), default=TaskStatus.PENDING)
priority = Column(Enum(TaskPriority), default=TaskPriority.MEDIUM)
due_date = Column(DateTime(timezone=True), nullable=True)
scheduled_at = Column(DateTime(timezone=True), nullable=True)
ai_suggested_time = Column(DateTime(timezone=True), nullable=True)
whatsapp_reminder_sent = Column(Boolean, default=False)
whatsapp_completion_sent = Column(Boolean, default=False)
owner_id = Column(Integer, ForeignKey("users.id"), nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
completed_at = Column(DateTime(timezone=True), nullable=True)
owner = relationship("User", back_populates="tasks")