34 lines
946 B
Python
34 lines
946 B
Python
import enum
|
|
|
|
from sqlalchemy import Boolean, Column, Enum, ForeignKey, Integer, String, Text
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from app.db.base import Base
|
|
from app.db.base_class import Base as BaseClass
|
|
|
|
|
|
class TaskStatus(str, enum.Enum):
|
|
TODO = "todo"
|
|
IN_PROGRESS = "in_progress"
|
|
DONE = "done"
|
|
|
|
|
|
class TaskPriority(str, enum.Enum):
|
|
LOW = "low"
|
|
MEDIUM = "medium"
|
|
HIGH = "high"
|
|
|
|
|
|
class Task(Base, BaseClass):
|
|
title = Column(String(100), nullable=False, index=True)
|
|
description = Column(Text, nullable=True)
|
|
status = Column(Enum(TaskStatus), default=TaskStatus.TODO, nullable=False)
|
|
priority = Column(Enum(TaskPriority), default=TaskPriority.MEDIUM, nullable=False)
|
|
is_completed = Column(Boolean, default=False)
|
|
|
|
# Foreign key to user
|
|
owner_id = Column(Integer, ForeignKey("user.id"), nullable=False)
|
|
|
|
# Relationship with user
|
|
owner = relationship("User", back_populates="tasks")
|