Files
HarborForge.Backend/app/models/milestone.py

32 lines
1.2 KiB
Python

from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.core.config import Base
import enum
class MilestoneStatus(str, enum.Enum):
OPEN = "open"
PENDING = "pending"
DEFERRED = "deferred"
PROGRESSING = "progressing"
CLOSED = "closed"
class Milestone(Base):
__tablename__ = "milestones"
id = Column(Integer, primary_key=True, index=True)
title = Column(String(255), nullable=False)
description = Column(Text, nullable=True)
status = Column(Enum(MilestoneStatus), default=MilestoneStatus.OPEN)
due_date = Column(DateTime(timezone=True), nullable=True)
planned_release_date = Column(DateTime(timezone=True), nullable=True)
depend_on_milestones = Column(Text, nullable=True) # JSON list of milestone codes
depend_on_tasks = Column(Text, nullable=True) # JSON list of task IDs
project_id = Column(Integer, ForeignKey("projects.id"), nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
project = relationship("Project")