DeltaTask MCP Server

from sqlalchemy import Column, String, Text, DateTime, Integer, Boolean, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.sql import func from typing import Dict, Any from deltatask.models.base import Base, todo_tags class Todo(Base): """Database model for todo items.""" __tablename__ = 'todos' id = Column(String(36), primary_key=True) title = Column(String(255), nullable=False) description = Column(Text, nullable=True) created = Column(DateTime, default=func.now()) updated = Column(DateTime, default=func.now(), onupdate=func.now()) deadline = Column(String(50), nullable=True) urgency = Column(Integer, default=1) effort = Column(Integer, default=1) completed = Column(Boolean, default=False) parent_id = Column(String(36), ForeignKey('todos.id'), nullable=True) # Relationships subtasks = relationship("Todo", backref="parent", remote_side=[id]) tags = relationship("Tag", secondary=todo_tags, back_populates="todos") def to_dict(self) -> Dict[str, Any]: """Convert Todo object to dictionary.""" return { "id": self.id, "title": self.title, "description": self.description, "created": self.created.isoformat() if self.created else None, "updated": self.updated.isoformat() if self.updated else None, "deadline": self.deadline, "urgency": self.urgency, "effort": self.effort, "completed": self.completed, "parent_id": self.parent_id, "tags": [tag.name for tag in self.tags] }