from datetime import UTC, datetime from app import db from app.models.base import SoftDeleteMixin class List(db.Model, SoftDeleteMixin): """List model for Kanban lists (columns)""" __tablename__ = "lists" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(200), nullable=False) closed = db.Column(db.Boolean, default=False) pos = db.Column(db.Float) # position for sorting # Foreign keys board_id = db.Column( db.Integer, db.ForeignKey("boards.id", ondelete="CASCADE"), nullable=False, index=True, ) # Timestamps created_at = db.Column(db.DateTime, default=lambda: datetime.now(UTC)) updated_at = db.Column( db.DateTime, default=lambda: datetime.now(UTC), onupdate=lambda: datetime.now(UTC), ) # Relationships - only active cards cards = db.relationship( "Card", backref="list", cascade="all, delete-orphan", lazy="dynamic", primaryjoin="and_(List.id == Card.list_id, Card.status == 'active')", ) def to_dict(self): """Convert list to dictionary""" return { "id": self.id, "name": self.name, "closed": self.closed, "pos": self.pos, "board_id": self.board_id, "created_at": self.created_at.isoformat() if self.created_at else None, "updated_at": self.updated_at.isoformat() if self.updated_at else None, "status": self.status, "deleted_at": self.deleted_at.isoformat() if self.deleted_at else None, } def __repr__(self): return f""