Coverage for app / models / task.py: 100%
23 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-26 21:50 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-26 21:50 +0000
1from sqlalchemy import (
2 Column,
3 Integer,
4 String,
5 Text,
6 Boolean,
7 SmallInteger,
8 TIMESTAMP,
9 ForeignKey,
10 JSON,
11)
12from sqlalchemy.dialects.postgresql import ARRAY
13from sqlalchemy.sql import func
14from sqlalchemy.orm import relationship
15from app.database import Base
18class Task(Base):
19 __tablename__ = "tasks"
21 id = Column(Integer, primary_key=True)
22 user_id = Column(
23 Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False
24 )
26 title = Column(String(255), nullable=False)
27 description = Column(Text)
28 completed = Column(Boolean, nullable=False, default=False)
29 importance = Column(SmallInteger, default=0)
30 length = Column(Integer)
31 tags = Column(JSON)
32 due_at = Column(TIMESTAMP)
33 reference_url = Column(String(255), nullable=True)
34 reminder_enabled = Column(Boolean, nullable=False, default=False)
36 created_at = Column(TIMESTAMP, server_default=func.now())
37 updated_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now())
38 completed_at = Column(TIMESTAMP, nullable=True)
40 user = relationship("User", backref="tasks")
41 # reminders = relationship("Reminders", back_populates="task")
42 subtasks = relationship("Subtask", back_populates="task", cascade="all, delete-orphan", lazy="joined")