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

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 

16 

17 

18class Task(Base): 

19 __tablename__ = "tasks" 

20 

21 id = Column(Integer, primary_key=True) 

22 user_id = Column( 

23 Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False 

24 ) 

25 

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) 

35 

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) 

39 

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